2

最近、特に gradle multidex プラグイン ('com.android.support:multidex:1.0.0') を使用して Dalvik VM 用にビルドするときに、Multidexing で問題が発生しています。

メインのdexファイルに含める必要がある正しいクラスをgradleが解決するのに苦労しているようです。その結果、ビルド プロセスは正常に完了しますが、メイン アプリケーション (それ自体が MultiDexApplication を拡張する) を正しくインスタンス化するために必要なクラスが含まれていないメイン dex ファイルが生成されることがあります。

一貫性のあるビルドを強引に実行するための現在の解決策は、multidex によって生成された中間ファイルを監視することでした。適切なビルド (つまり、メイン アプリ、つまり MultiDexApplication を正しくインスタンス化したもの) ができたら、メイン dex ファイルに含まれていたクラスのリストをファイルにコピーし、それを強制的に multidex に使用させます ( --main を使用) -dex-list パラメータ)。これにより、必要なクラスをメインの dex ファイルに「強制」することが一時的に可能になりましたが、明らかに保守性が低く、新しいクラス/依存関係が追加されたときに簡単に更新できません。

依存性注入に Dagger 2 を使用していますが、これが原因で multidex プラグインがメイン アプリの依存性を正しく識別できていないのではないかと疑っています。これが原因でしょうか? また、最小限の「App Wrapper」(MultiDexApplication を拡張するもの) を multidexing の「エントリ ポイント」として使用することについてのさまざまな参照にも遭遇しましたが、続行するプロセスに関する十分なドキュメントを見つけることができませんでした。

これについての洞察を提供できれば素晴らしいと思います-これは以前に経験した問題ですか? 既知の回避策はありますか? 「App Wrapper」パターンを実装する方法について詳細を教えていただければ幸いです。

4

1 に答える 1

2

新しいサポート v4 ライブラリには multidex が含まれています。それを使用してみましたか?

以下を gradle の依存関係に追加します。

    compile "com.android.support:support-v4:$21.0.+"

このフラグを Android > defaultConfig gradle に追加します

android{
    defaultConfig{
        ....
        multiDexEnabled true
    }
}
于 2015-05-27T01:02:46.500 に答える