問題タブ [android-multidex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - コードを圧縮する方法 - 65k メソッドの制限インデックス
多くのライブラリ プロジェクトに依存するかなり大きな Android アプリがあります。Android コンパイラには .dex ファイルごとに 65536 メソッドという制限があり、私はその数を超えています。
メソッドの制限に達したときに選択できる (少なくとも私が知っている) 基本的に 2 つのパスがあります。
1) コードを縮小する
2) 複数の dex ファイルを作成する (このブログ投稿を参照)
私は両方を調査し、メソッド数が非常に多くなる原因を突き止めようとしました。Google Drive API は、12,000 を超える Guava 依存関係で最大のチャンクを占めます。Drive API v2 の合計ライブラリ数が 23,000 を超えました!
私の質問だと思いますが、私は何をすべきだと思いますか? アプリの機能として Google ドライブの統合を削除する必要がありますか? API を縮小する方法はありますか (はい、proguard を使用しています)。複数の dex ルートを使用する必要がありますか (これは、特にサード パーティの API を扱う場合、かなり面倒に見えます)。
android - MultiDexApplication が認識されない
アプリで MultiDexApplication を使用しようとしていますが、アプリケーション アクティビティを拡張しようとするとクラスが認識されません。
これが私のbuild.gradleファイルです:
最新のビルド ツールと最新の Google Play サービスとサポート ライブラリを使用して、21 でコンパイルしていることがわかります。
誰かがこれを機能させましたか?
android - Android Multidex リストのすべてのクラス
ここで説明されているように、ApplicationWrapepr アプローチを使用して、アプリケーションで multidex を使用したいと思いますhttps://plus.google.com/104023661970539138053/posts/YTMf8ADTcFg
--minimal-main-dex オプションを次のような保持ファイルとともに使用しました。
これにより、メインのdexファイルにリストされたクラスが表示されますが、これは問題ありません。次のコードを使用してdexfile内のすべてのクラスをリストするライブラリを使用しますが、新しいDexFileは「classes.dex」のみをチェックするため、メインの「clesses.dex」のエントリを取得し、他のすべてのロードされたdexファイルのエントリは取得しません。 :
今のところ単一のパスは次のように決定されます。
/data/../myapplicationname.apk のような結果になります
リストされたdexファイルのすべてのクラスを取得する別の可能性はありますか? または、現在 ClassLoaders にあるすべてのクラスですか? ライブラリはプロジェクトに不可欠であり、このアプローチを使用して、後でリフレクションを介してコンポーネントの実装を見つけます。
EDIT1 : classes2.dex ファイルが /data/data/com./code_cache/secondary-dexes/com.-1.apk.classes2.dex の下に配置されていることがわかった場合
ただし、このパスで new DexFile() を使用すると、IOEsxception がスローされ、「dexfile を開けません」というメッセージが表示されます。
android - エラー: タスク collectDebugMultiDexComponents の構成で問題が見つかりました
新しい multiDexEnabled true 機能を使用したいので、Android Studio を 0.9 に、ビルド ツールを 21.1.0 に、gradle を 0.14 に更新しました。現在、私はこのアプローチ https://github.com/casidiablo/multidexを使用して multidex を管理しており、すべてが機能していますが、multiDexEnabled 機能の方が優れているようです。
しかし、gradle 0.14 を使用すると、このエラーが発生しました。uses-sdk 要素は、@Medo によって投稿されたソリューションを使用して「解決」した「tools:node」属性を持つことはできません。
しかし、このアプローチを使用すると、multiDexEnabled は機能せず、次のエラーが発生します。
エラー: タスク ':participactclient:collectDebugMultiDexComponents' の構成に問題が見つかりました。
プロパティ「マニフェスト」に指定されたファイル「/Users/danielecampogiani/Developing/Android/Android Studio/Participact Client/participactclient/build/intermediates/manifests/full/debug/AndroidManifest.xml」が存在しません。
これを解決するには?
android - Gradle なしで multiDexEnabled を使用するが、代わりに Eclipse ビルド プロセスを使用する
最新の SDK バージョン以降、複数の dex ファイル ( https://developer.android.com/tools/building/multidex.html )を使用してアプリケーションを作成するのがはるかに簡単になりました。ビルド プロセスに Gradle を使用していませんが、「古い」Eclipse ビルド チェーンを使用していますか?
Gradleビルドファイルの「multiDexEnabled true」は、他の方法でもAndroidコンパイラに送信できる必要がありますか?
android - パスにクラス "android.support.multidex.MultiDexApplication" が見つかりませんでした: DexPathList
アプリで新しいMultiDex サポートを試しています。これまでのところ、アプリを正しくコンパイルすることができましたが、実行すると次の例外が発生します。
これは私のgradleファイルです:
そして私の AndroidManifest.xml:
何が問題なのかわかりません。私はドキュメントに従ってすべてをやっていると思います。私が見逃しているものは他にありますか?SDK マネージャーから最新のサポート ライブラリとリポジトリがインストールされていることを確認しました。
android - Android Studio multi-dex gradle が Mac 上の Java を認識しない
Mac で multi-dex を使用して gradle プロジェクト (プラグイン 0.14.0) をコンパイルしようとすると、次のエラーが発生します。
助言がありますか?端末から ./gradlew を実行すると動作します。
android - multiDexEnabled が機能しない
私はかなり大きなAndroidプロジェクトを持っています。プロジェクトは引き続きコンパイルされますが、テストをコンパイルしようとするとエラーが発生します。
わかりました、multiDexEnabled プロパティを見つけて追加しました
の中に
また、アプリケーションを拡張しました
しかし、それは何も変わらなかった、私はまだ得る
そして、 --multi-dex パラメータなしで dx コマンドを明示的に表示します
android - Gradle DSL メソッドが見つかりません: 'multiDexEnabled()'
https://developer.android.com/tools/building/multidex.htmlの multidex ガイドに従いました
しかし、Gradle DSL method not found : 'multiDexEnabled()' というエラーが表示されます。Android Built Tools 、Android Support Repository および Library を更新しました。これが私のgradle.buildファイルです。ここで何か間違ったことをしていますか?
build.gradle