Подтвердить что ты не робот

Что такое Android Pre-Dexing и как повысить производительность?

Я вижу, что ant script Android имеет сообщение о том, что он "pre-dexing". Однако dex и pre-dex используют одни и те же параметры, за исключением того, что в одном случае одна банка за раз, в другом случае несколько банок за раз.

Какая реальная потребность? Обязателен ли pre-dex?

например

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'
4b9b3361

Ответ 1

Полезно помнить в этом случае, что вы работаете на Java, что не совсем то же самое, что и во время работы Dalvik. Java, от Oracle, использует совершенно другую виртуальную машину, а Dalvik специально настроен для мобильных устройств.

Процессы DEX обрабатывают ваши JAR файлы Java и преобразуют их в файлы исполняемых файлов Dalvik (.dex), которые будут запускаться на Android. В JVM Oracle используется другой байт-код, чем время выполнения Dalvik, что делает этот шаг необходимым.

Существует процесс для библиотек, которые вы могли включить в свой проект, поскольку они также скомпилированы со стандартным компилятором Java, а затем еще один процесс для вашего фактического проекта.

Выполняется в два этапа, так как последний процесс, ваше приложение, требует доступа к уже имеющимся файлам библиотеки, чтобы избежать ссылки на изменение кода во время процесса.

Вы можете узнать больше на http://source.android.com/devices/tech/dalvik/index.html - где вы также увидите, что Dalvik планируется заменить чем-то, что называется ART.