2013-10-07 19 views
22

Vedo che lo script ant di Android ha il messaggio che è "pre-dexing". Tuttavia dex e pre-dex usano le stesse opzioni, tranne che in un caso un barattolo alla volta, in altri casi vasi multipli alla volta.Che cos'è Android Pre-Dexing e come aumentare le prestazioni?

Qual è il vero bisogno? Il pre-dex è obbligatorio?

es

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

Questo processo di pre-dexing viene eseguito per le librerie esterne che potresti aver incluso nel progetto. Il secondo processo di dexing è per la tua app (da .class a .dex [DEX è più adatto per i sistemi con limiti di memoria e velocità]). Pre-Dexing è richiesto ogni volta che si crea l'app perché: 1) Alcuni codici nell'app (presi da una libreria esterna) potrebbero non funzionare correttamente. 2) La libreria (che potrebbe essere stata scaricata da un sito esterno) potrebbe essere stata compilata con un vecchio compilatore java (gli strumenti SDK emettono un avviso per questo). – 10101010

risposta

19

E 'utile ricordare che in questo caso si sta lavorando in Java, che non è esattamente la stessa cosa come il runtime Dalvik. Java, da Oracle, utilizza una macchina virtuale completamente diversa, mentre Dalvik è specificamente ottimizzato per i dispositivi mobili.

I processi DEX prelevano i file JAR compilati in Java e li convertono in file eseguibili (.dex) di Dalvik che verranno eseguiti su Android. Oracle JVM utilizza diversi bytecode rispetto al runtime Dalvik, rendendo questo passaggio una necessità.

C'è un processo per le librerie che potresti aver incluso nel tuo progetto, dato che sono anche compilate con un compilatore Java standard, e quindi un altro processo per il tuo progetto attuale.

L'operazione viene eseguita in due passaggi poiché la procedura finale, l'applicazione, richiede l'accesso a file di libreria già dexati per evitare di avere riferimenti al cambio di codice mentre il processo è occupato.

È possibile trovare ulteriori informazioni su http://source.android.com/devices/tech/dalvik/index.html - dove si vedrà anche che Dalvik è programmato per la sostituzione con qualcosa chiamato ART.

Problemi correlati