0

Android プロジェクトでビルドの問題が発生しています。メソッドの制限が 65K を超えているため、multidex サポートの使用を開始する必要がありました。私が問題を抱えていることの1つは、メインのdexリストファイルを作成することです。すべてをビルドできますが、apk をデバイスにドロップした後、アプリがクラッシュし、NoClassDefFoundError や VerifyError などの異常なエラーが発生します。それで、私はそれがmultidexと関係があると思います.私はかなり立ち往生しています. すべてのクラス ファイルをリストに追加する必要がありますか? ありがとう。

4

1 に答える 1

1

私はactiveandroidと同じ警告を持っています

VFY: unable to resolve static method 

その後、致命的な NoClassDefFound エラーがランタイム プロセスを終了します。デバイスの API がターゲット SDK API のバージョンよりも低い場合に、いくつかの静的メソッドが見つからないことがあります。mainDexClasses スクリプトは、すべてのクラスを 1 つの dex ファイルに結合するのに役立つことがわかりました。残念ながら、このユーティリティは私の場合には当てはまりません。そのため、デバイスで見つからないすべてのクラスを取得するために dexdump ユーティリティを使用します

${ANDROID_HOME}/build-tools/[sdkNum]/dexdump target/classes.dex |grep "Class descriptor"|grep activeandroid >> MainDexList.txt

上記のように、classes2.dex から MainDexList.txt にクラスを追加します。クラス全体のリストではなく、activeandroid パッケージのみを取得していることに注意してください。次に、このように冗長なプレフィックスとサフィックスを削除します

sed -r "s/  Class descriptor  : 'L//g" MainDexList.txt>MainDexList.tmp;\
sed -r "s/;'/.class/g" MainDexList.tmp > MainDexList;\
rm MainDexList.tmp 

次に、MainDexList を指定します

<mainDexList>MainDexList</mainDexList>

android-plugin 構成の index セクションを参照するか、このファイルを dx ユーティリティに使用します。

65k がメソッド数を制限する理由がよくわかりません。multiDex オプションを有効にしましたか (こちらを参照)? いくつかの dex ファイルが生成される主な理由だと思います。そのため、私の場合、1 つのパッケージが 2 つのファイルに分割されるときに問題が発生します。したがって、上記のように MainDexList 全体を取得することは避ける必要があります。

于 2016-09-29T13:17:25.900 に答える