web-dev-qa-db-ja.com

Android Pre-Dexingとは何ですか?パフォーマンスを向上させる方法は?

Androidのantスクリプトには、「pre-dexing」であるというメッセージがあります。ただし、dexとpre-dexは同じオプションを使用しますが、ある場合は一度に1つの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'
24

この場合、Javaで作業していることを覚えておくと便利です。これは、Dalvikランタイムとまったく同じではありません。 OracleのJavaは、まったく異なる仮想マシンを使用しますが、Dalvikはモバイルデバイス用に特別に微調整されています。

DEXプロセスは、JavaコンパイルされたJARファイルを取得し、Androidで実行されるDalvik実行可能ファイル(.dex)ファイルに変換します。OracleJVMはDalvikランタイムとは異なるバイトコードを使用するため、この手順を実行します。必需品。

ライブラリは標準のJavaコンパイラ)でコンパイルされているため、プロジェクトに含まれている可能性のあるライブラリのプロセスがあり、次に実際のプロジェクトの別のプロセスがあります。

最後のプロセスであるアプリケーションでは、プロセスがビジー状態のときにコード変更への参照が発生しないように、すでにデクス化されたライブラリファイルにアクセスする必要があるため、2つのステップで実行されます。

詳細については、 http://source.Android.com/devices/tech/dalvik/index.html -を参照してください。ここでは、DalvikがARTと呼ばれるものとの交換が予定されていることもわかります。

20
Ewald