Yanıtlar:
Bu cevap büyük ölçüde Android'in resmi belgelerine dayanmaktadır (özellikle alıntı yapılan bölümler).
Unity Projesi için Multidex Desteği nasıl kurulur
Multidex nedir:
Android uygulama (APK) dosyaları, uygulamanızı çalıştırmak için kullanılan derlenmiş kodu içeren Dalvik Yürütülebilir (DEX) dosyaları biçimindeki yürütülebilir bayt kodu dosyaları içerir. Dalvik Yürütülebilir belirtimi, Android çerçeve yöntemleri, kitaplık yöntemleri ve kendi kodunuzdaki yöntemler dahil olmak üzere tek bir DEX dosyasında başvurulabilecek toplam yöntem sayısını 65.536 ile sınırlar. Bu sınırı aşmak için uygulama oluşturma işleminizi çoklu dex yapılandırması olarak bilinen birden fazla DEX dosyası oluşturacak şekilde yapılandırmanız gerekir.
Multidex kullandığımızda:
Tek bir DEX dosyasında referans verilebilecek toplam yöntem sayısını aştığımızda, Android çerçeve yöntemleri, kitaplık yöntemleri ve kendi kodunuzdaki yöntemler dahil 65.536
64K sınırından kaçının
Uygulamanızı 64K veya daha fazla yöntem referansının kullanımını etkinleştirecek şekilde yapılandırmadan önce, uygulama kodunuz veya dahil edilen kitaplıklar tarafından tanımlanan yöntemler de dahil olmak üzere uygulama kodunuz tarafından çağrılan toplam referans sayısını azaltmak için adımlar atmalısınız. Aşağıdaki stratejiler, DEX referans sınırına ulaşmamaya yardımcı olabilir:
Uygulamanızın doğrudan ve geçişli bağımlılıklarını inceleyin - Uygulamanıza eklediğiniz büyük kitaplık bağımlılığının, uygulamaya eklenen kod miktarından daha ağır bastığından emin olun. Yaygın bir anti-desen, çok sayıda yardımcı yöntem yararlı olduğu için çok büyük bir kitaplık içermektir. Uygulama kodu bağımlılıklarınızı azaltmak genellikle DEX referans sınırını önlemenize yardımcı olabilir.
ProGuard ile kullanılmayan kodu kaldır - Sürüm sürümleriniz için ProGuard'ı çalıştırmak için kod küçültmeyi etkinleştirin . Küçülmeyi etkinleştirmek, APK'larınızla kullanılmayan kod göndermemenizi sağlar.
Bu resmi ipuçlarının yanı sıra, Unity projenizi oluştururken aşağıdaki adımları izlemeniz size daha fazla yardımcı olacaktır:
Uygulama projenizi çoklu dex yapılandırması kullanacak şekilde ayarlamak için aşağıdaki değişikliği yapmanız gerekir.
Senin minSdkVersion'ın 21 veya daha yüksek olarak ayarlanırsa, tüm ayarlanır yapmak gerekmez
multiDexEnabled
içintrue
burada gösterildiği gibi, sizin modül düzeyi build.gradle dosyasında:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
Ancak,
minSdkVersion
20 veya daha düşük bir değere ayarlanırsa, multidex destek kitaplığını aşağıdaki gibi kullanmanız gerekir:3.1. Multidex'i etkinleştirmek için modül düzeyinde build.gradle dosyasını değiştirin ve burada gösterildiği gibi multidex kitaplığını bağımlılık olarak ekleyin:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2. Application sınıfını geçersiz kılmanıza bağlı olarak aşağıdakilerden birini yapın:
Application
Sınıfı geçersiz kılmazsanız, manifest dosyanızı etikette aşağıdaki gibi ayarlamakandroid:name
üzere düzenleyin<application>
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
Application
Sınıfı geçersiz kılarsanız, MultiDexApplication öğesini (mümkünse) aşağıdaki gibi genişletmek için değiştirin:
public class MyApplication extends MultiDexApplication { ... }
- Veya Application sınıfını geçersiz kılarsanız, ancak temel sınıfı değiştirmek mümkün değilse, bunun yerine attachBaseContext () yöntemini geçersiz kılabilir ve multidex'i etkinleştirmek için MultiDex.install (this) öğesini çağırabilirsiniz:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Diğer eklentilerin bildirim formunu kontrol edin ve projeyi temizleyin.
Projenizde herhangi bir bağımlılık sorunu varsa, bu komutu Android Terminalinde çalıştırın
% Gradle clean App."App name"
Bu bağımlılığı Bağımlılıklar altında Uygulama Sınıfınıza kopyalayın:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
SigningConfig öğesini ana projeleriniz Gradle'a ekleyin.
Veya İmza modunu manuel olarak Hata Ayıklama moduna ayarlayın, Dosyaya Git -> Proje Yapısı -> Modüller Altında Projenize tıklayın ve Derleme Türleri altında Hata Ayıkla'yı seçin>> İmzalama Yapılandırması'nı seçin>> hata ayıklama
Şimdi Gradle'ınızı senkronize edin ve projeyi oluşturun.
Doğrudan birlik üzerinden multidex özellikli oyunlar oluşturmanıza yardımcı olacak bu bağlantıdan geçmenizi tavsiye ederim.
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
Not: Bu yalnızca birlikteliğin kendisinde multidex'i etkinleştirir (ve multidex sorunlarını çözmelidir). Gradle ile ilgili sorunları düzeltmez.