我看到Android的 Ant 脚本有消息说它正在“预删除”。但是dex和pre-dex使用相同的选项,除了在一种情况下一次一个 jar ,在另一种情况下一次多个 jar 。

真正的需求是什么? 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'

最佳答案

在这种情况下,记住使用Java是很有用的,这与Dalvik运行时并不完全相同。来自Oracle的Java使用完全不同的虚拟机,而Dalvik特别针对移动设备进行了微调。

DEX进程将您的Java编译的JAR文件转换为Dalvik可执行文件(.dex)文件,这些文件将在Android上运行。 Oracle JVM使用与Dalvik运行时不同的字节码,因此此步骤是必要的。

您可能已经在项目中包含了一个库的过程,因为它们也是使用标准Java编译器进行编译的,然后是您实际项目中的另一个过程。

这是分两个步骤完成的,作为最终过程,您的应用程序需要访问已精简的库文件,以避免在过程繁忙时引用代码更改。

您可以在http://source.android.com/devices/tech/dalvik/index.html上找到更多信息-在该处,您还将看到Dalvik已计划用ART进行替换。

关于android - 什么是Android Pre-Dexing,它如何提高性能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19227611/

10-11 19:59