MultiDex hakkında birçok gönderi var. Ben hataları dahil çözüldü, bazen yaşamış multiDexEnabled true
içindedefaultConfig
benim build.gradle bölümünde.
Peki bu özellik tam olarak nedir? Kullanmanın senaryoları nelerdir?
MultiDex hakkında birçok gönderi var. Ben hataları dahil çözüldü, bazen yaşamış multiDexEnabled true
içindedefaultConfig
benim build.gradle bölümünde.
Peki bu özellik tam olarak nedir? Kullanmanın senaryoları nelerdir?
Yanıtlar:
Belgelerden alıntı yapmak :
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çiminde yürütülebilir bayt kodu dosyaları içerir. Dalvik Yürütülebilir özelliği, 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, uygulama oluşturma sürecinizi multidex yapılandırması olarak bilinen birden fazla DEX dosyası oluşturacak şekilde yapılandırmanızı gerektirir.
Yani özellik şudur: karmaşık uygulamanızın derlenmesine izin verir. Bunu kullanma senaryoları, 64K DEX yöntemi referans sınırına ulaşılması nedeniyle uygulamanızın derlenememesi durumudur. Bu, aşağıdaki gibi bir yapı hatası olarak görünür:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Tek bir .dex dosyası 65.536 yönteme (referanslara) sahip olabilir, bu nedenle referans sayısı 65.536'yı aşarsa, multidex'i kullanırsınız.
Bir android uygulama programı bir .dex dosyasına derlenir ve bu dosya da tek bir .apk dosyasına sıkıştırılır.
DVM (Dalvik Sanal Makinesi), bayt kodlarını yürütmek için .dex dosyası / dosyalarını kullanır.
Referans sayısının 65.536 sınırı aşmasına ne sebep olur?
Sizin tarafınızdan yazılan yöntemler + Android Framework yöntemleri + Üçüncü taraf kitaplığı (örneğin Volley, Retrofit, Facebook SDK vb.) Yöntemleri.
"Bir yerde"
Uygulama Uyumluluğu okudum 24.2.1, 16.5k yöntem içerir
Google Play Hizmetleri GCM 9.6.1, 16.7k yöntem içerir
Yani, Uygulama Uyumluluğu 24.2.1'e sahip basit bir Merhaba dünya uygulaması oluşturduysanız, zaten 1/4 tek dex yöntemi sınırını aşmanın yolu
Dex , Google'ın sanal makine işlemcisinin (Dalvik) Android Uygulamalarını işlemek için kullandığı Dalvik Executable'ın kısaltmasıdır. Android, küçük ve basit uygulamalar göz önünde bulundurularak oluşturuldu ve tek bir Dalvik Yürütülebilir dosyasındaki kısıtlamalar, 65.536 yöntemde kod referanslarının çatısını sabitledi. Bu sorun ve Dalvik makinesinin kod yürütme biçiminden dolayı Monkey Patch veya MultiDex entegrasyonuna kadar bazı derleme ve çağırma sorunları vardı . Android Studio'daki MultiDex entegrasyonu , Android Geliştiricilerine 65.536'dan fazla yöntemle bir kod tabanı derleme ve yürütme yeteneği sağlar!
Android geliştirici resmi sitesi kabul ediliyor.
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.