2013-10-07 11 views
22

Android'in anti-script'inin "ön-dexing" olduğunu belirten mesajının olduğunu görüyorum. Bununla birlikte, dex ve pre-dex aynı seçenekleri kullanır, ancak bir seferde bir kavanoz, diğer durumda bir seferde birden fazla kavanoz.Android Pre-Dexing nedir ve performansı nasıl artırır?

gerçek ihtiyaç nedir? Pre-dex zorunlu mu?

örneğin

The ' characters around the executable and arguments are 
not part of the command. 
     [dex] Pre-Dexing F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\libs\pinit-sdk-1.0.jar -> pinit-sdk-1.0-e3bebafa2727504605edf3d8d85b5d46.jar 
     [dx] Current OS is Windows 7 
     [dx] Executing 'D:\Apps\java\embd\cmn\android\oems\google\adt\4.x\4.3.x\4.3\sdk\build-tools\18.1.0\dx.bat' with arguments: 
     [dx] '--dex' 
     [dx] '--output' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\dexedLibs\pinit-sdk-1.0-e3bebafa2727504605edf3d8d85b5d46.jar' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\libs\pinit-sdk-1.0.jar' 
     [dx] 
     [dx] The ' characters around the executable and arguments are 
     [dx] not part of the command. 
Execute:Java13CommandLauncher: Executing 'D:\Apps\java\embd\cmn\android\oems\google\adt\4.x\4.3.x\4.3\sdk\build-tools\18.1.0\dx.bat' with arguments: 
'--dex' 
'--output' 
'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\dexedLibs\pinit-sdk-1.0-e3bebafa2727504605edf3d8d85b5d46.jar' 
'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\libs\pinit-sdk-1.0.jar' 

The ' characters around the executable and arguments are 
not part of the command. 
     [dex] Converting compiled files and external libraries into F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\classes.dex... 
     [dx] Current OS is Windows 7 
     [dx] Executing 'D:\Apps\java\embd\cmn\android\oems\google\adt\4.x\4.3.x\4.3\sdk\build-tools\18.1.0\dx.bat' with arguments: 
     [dx] '--dex' 
     [dx] '--output' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\classes.dex' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\classes' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\dexedLibs\classes-144740ee5cf8b90b747300d19fb8201e.jar' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\dexedLibs\classes-1593da1bb60c5ec741aca494963e04a3.jar' 
     [dx] 'F:\users\tejasoft\work\fnd\cmn\tools\social\sz\demo\bin\dexedLibs\classes-37bb5269e4fbd6dda9900fea95c0c29b.jar' 
+1

Bu ön Dexing işlemi projeniz dahil olabilecek harici kütüphaneleri için yapılır. İkinci dexing işlemi uygulamanız içindir (.class - .dex [DEX bellek ve hızda kısıtlı sistemler için daha uygundur]). Uygulama oluşturduğunuz her zaman Pre-Dexing gereklidir: 1) Uygulamadaki bazı kodlar (harici kitaplıktan alınmıştır) düzgün çalışmayabilir. 2) Kütüphane (harici bir siteden indirmiş olabilirsiniz) eski bir java derleyicisi ile derlenmiş olabilir (SDK Tools bunun için bir uyarı verir). – 10101010

cevap

19

Size aynen Dalvik çalışma zamanı aynı şey değildir Java, çalışan bu durumda hatırlamak yararlıdır. Oracle'dan Java, tamamen farklı bir sanal makine kullanıyor, Dalvik ise özellikle mobil cihazlar için hassas ayarlanmış.

DEX süreçleri Java derlenmiş JAR dosyalarını alıp Android'de çalışacak Dalvik Çalıştırılabilir Dosyalar (.dex) dosyaları dönüştürür. Oracle JVM, Dalvik çalışma zamanından farklı bir bayt kodu kullanır ve bu adımı bir zorunluluk haline getirir. onlar da standart bir Java derleyicisi ile derlenmiş ve gerçek proje için daha sonra başka işlem olarak siz, projeye dahil olabilecek kütüphaneler için bir süreç vardır

.

Nihai süreç olarak iki adımda, uygulamanızda bitti, zaten süreç meşgulken kod değişikliği başvuruları zorunda kalmamak için kütüphane dosyaları indekslenir erişim gerektirir. Ayrıca Dalvik ART denilen şey ile değiştirilmesi planlanıyor göreceksiniz nerede -

Daha http://source.android.com/devices/tech/dalvik/index.html de öğrenebilirsiniz.

İlgili konular