2016-10-20 15 views
1

build.gradleファイルに次の依存関係があります。私はIonic/Cordovaモバイルアプリを使用しています。Google Playサービスで複数のdexファイルが定義されています

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
    // SUB-PROJECT DEPENDENCIES START 
    debugCompile project(path: "CordovaLib", configuration: "debug") 
    releaseCompile project(path: "CordovaLib", configuration: "release") 
    compile "com.google.android.gms:play-services-analytics:+" 
    compile "com.onesignal:OneSignal:[email protected]" 
    compile "com.google.android.gms:play-services-gcm:+" 
    compile "com.google.android.gms:play-services-location:+" 
    compile "com.google.android.gms:play-services-ads:8.4+" 
    // SUB-PROJECT DEPENDENCIES END 
} 

ビルドプロセス中に以下のエラーが発生します。

Error: cmd: Command failed with exit code 1 Error output: 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
Dex: Error converting bytecode to dex: 
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzah; 
    UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzah; 
     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:591) 
     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:546) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:528) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) 
     at com.android.dx.command.dexer.Main.run(Main.java:277) 
     at com.android.dx.command.dexer.Main.main(Main.java:245) 
     at com.android.dx.command.Main.main(Main.java:106) 


FAILURE: Build failed with an exception. 

私は以下のSOのリンクを読んでいます。それはアプリのレベルとモジュールレベルのグラデルファイルについて述べています。私はそれらの2つのファイルがわからない。

Version conflict updating to 8.4.0

Multiple dex files define Lcom/google/android/gms/internal/zzim;

Multiple dex files define Lcom/google/android/gms/internal/zzau

答えて

0

理由はわかりませんが、Google Admobライブラリプラグインを追加するとビルドに成功しました。

注:私はAdmob用のcordovaプラグインを使用しています。

0

あなたが同じライブラリ/ディレクトリには、一度、あなたのbuild.gradleの依存関係の中に複数含まれていときにエラーが発生します。これは、このthreadに記載されているように、使用している別のプラグインと競合するようにも見えます。

あなたはこれらのリンクをチェックすることができます。

  • UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files defineがあなたのbuild.gradleファイル内のすべてのあなたの依存関係を確認してください。あなたがすでに含まれている依存関係も含む依存関係を参照していますか?たとえば、appcompat-v7を含む場合、v4にはv4のすべての機能が含まれているため、appcompat-v4を含める必要はありません。

このエラーは、プロジェクトで参照あまりにも多くの方法を持っていることによって引き起こされます。 You can read more here.一般に、使用されていないライブラリを削除するか、デバッグビルドでもproguardを使用して、参照されるメソッドの数を減らす必要があることを意味します。また、記事に記載されているマルチデックスを使用することもできますが、プロジェクトが複雑になります。

関連する問題