SORU
18 Mart 2013, PAZARTESİ


Nasıl kod shrink - 65 k yöntem dex.

Birçok kütüphane projeleri dayanan oldukça büyük bir Android uygulaması var. Android derleyici başına 65536 yöntemleri bir sınırlama vardır .dosya dex ve bu sayıyı aşarak ediyorum.

Temelde yöntem sınırı vurduğunuzda (bildiğim kadarıyla en azından) seçebileceğiniz iki yol vardır.

1) kodunuzu Küçültmek

2) birden fazla dex dosyaları (see this blog post) Oluşturun

Hem içine baktım ve Yöntem sayım çok yüksek gitmek neden ne olduğunu öğrenmeye çalıştı. Google Drive API 12.000 at Guava bağımlılık ile büyük bir yığın alır. Sürücü API v2 için toplam libs 23.000 ulaşmak!

Sanırım benim soru, sen ne yapmam gerektiğini ne düşünüyorsunuz? Benim app bir özellik olarak Google Drive entegrasyonu kaldırmak gerekir. API küçültmek için bir yol (Evet, Marathon kullanıyorum) var mı? Birden fazla dex rota acı değil, özellikle üçüncü parti API ile ilgili görünüyor) gitmeli miyim?

CEVAP
3 Kasım 2014, PAZARTESİ


Google sonunda dex dosyaları yöntem 65 bin sınırını aşarak için geçici çözüm/düzeltme uygulama var gibi görünüyor.

65 bin Başvuru Sınırı hakkında

Android uygulaması (APK) dosyalarını içeren bayt kodu çalıştırılabilir Dalvik Çalıştırılabilir formu (DEX)dosyaları derlenmiş kodu içeren dosyalar, uygulamanızı çalıştırmak için kullanılır. Bu Dalvik Çalıştırılabilir belirtim yöntemleri toplam sayısını sınırlar bu 65,536, DEX de dahil olmak üzere tek bir dosya içinde başvurulabilir Android çerçeve yöntemleri, kütüphane yöntemleri ve kendi yöntemleri kod. Bu sınırı geçemeyecek uygulamanızı yapılandırmanız gerekir birden fazla DEX dosyası, bir multidex olarak bilinen oluşturmak için oluşturma işlemi yapılandırma.

Android 5.0 önce Multidex destek

Platform 5.0 Android önceki sürümleri, Dalvik çalışma zamanı kullanın yürütme uygulama kodu için. Varsayılan olarak, Dalvik bir tek uygulama sınırları sınıflar.dex MUAYENE başına bayt kodu dosyası. Bu etrafında almak için kısıtlamadan kullanabileceğiniz olur multidex support library, uygulamanızı ve ardından birincil DEX dosyasının bir parçası erişmek için yönetir bu ek dosyalar ve içerdikleri kod DEX.

Android 5.0 ve üstü için Multidex destek

Ve daha yüksek kullanan bir çalışma zamanı SANAT denilen yerel bir Android 5.0 destekler birden fazla dex yükleme uygulaması MUAYENE dosyalarını dosyaları. SANAT gerçekleştiren uygulama öncesi derleme zaman yüklemek için tarar sınıflar (N..).dex ve bir tek içine dosyaları derler .yulaf için dosya Android cihaz tarafından yürütülmesi. Android hakkında daha fazla bilgi için 5.0 çalışma zamanı, Introducing ART bakın.

Bakın: Building Apps with Over 65K Methods


Kütüphane Destek Multidex

Bu kütüphane binası için destek sağlar birden fazla Dalvik Çalıştırılabilir (DEX) dosyaları ile uygulamalar. Başvuru Apps 65536'dan fazla yöntem multidex yapılandırmaları kullanmak için gereklidir. Multidex kullanma hakkında daha fazla bilgi için, Building Apps with Over 65K Methods bkz.

Bu kütüphane/android/support/multidex//ekstralar yer almaktadır sonra dizin Android Destek Kütüphaneleri indirin. Bu kütüphane kullanıcı arayüzü kaynakları içermiyor. Bunu Ekle Uygulama Projesi, Adding libraries without resources. için talimatları izleyin

Bu kütüphane için komut bağımlılık tanımlayıcı yapı Gradle gibi şöyle:

com.android.destek:: 1.0. multidex Bu bağımlılık gösterim belirtir sürümü 1.0.0 veya daha yüksek.


Hala 65 k yöntem sınırı isabet aktif Marathon kullanarak ve sizin bağımlılıkları gözden geçirerek kaçınmalısınız.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • George McCarron

    George McCar

    29 Mayıs 2013
  • knopik96

    knopik96

    7 Mayıs 2011