2017-07-19 141 views
0

關於dependency複製/排除在gradle中的另一個問題。 我的問題看起來像這樣:Android Gradle依賴關係排除

依賴關係樹:

  • TesterApp
    • DataService的
      • FirstWebService
        • MyJava.Common.Classes
    • MyAndroidGraphics
      • MyAndroid.Common.Classes
        • MyJava.Common.Classes
    • MyUiViews
      • 個MyAndroid.Common.Classes
        • MyJava.Common.Classes

項目測試應用 的build.gradle

dependencies { 
    compile(project(':data.services')) 
    compile(project(':my.android.graphics')) 
    compile(project(':my.ui.views')) 
} 

個Data.Services的build.gradle

dependencies { 
    compile(project(':first.webservice')) 
} 

我的Android圖形的build.gradle

dependencies { 
    compile(project(':my.android.common.classes')) 
} 

我的UI查看的build.gradle

dependencies { 
    compile 'me.dm7.barcodescanner:zxing:1.5' 
    compile(project(':my.android.common.classes')) 
} 

我的Android通用類 build.gradle

dependencies { 
    compile 'com.android.support:appcompat-v7:25.2.0' 
    compile 'com.android.support:support-v4:25.2.0' 
    compile 'com.android.support:cardview-v7:25.2.0' 
    compile(project(':my.java.common.classes')) 
} 

我的Java通用類的build.gradle

dependencies { 
    compile 'com.mcxiaoke.volley:library:1.0.9' 
} 

正如你所看到的,重複與my.java.common.classesmy.android.common.classes,我不能把它合併爲這些庫在不同的項目中使用和一般通用於不同的項目。

我試圖用exclude

dependencies { 
    compile(project(':data.services')){ 
    exclude module : ':my.java.common.classes' 
    } 
    compile(project(':my.android.graphics')){ 
    exclude module : ':my.java.common.classes' 
    } 
    compile(project(':my.java.common.classes')) 
} 

遺憾的是沒有多大幫助,還是有

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK trust_root.bks 

File1: D:\projects\android\my.tester.app\my.java.common.classes\build\libs\my.java.common.classes-1.0.jar 
File2: D:\projects\android\my.tester.app\my.android.common.classes\build\libs\my.android.common.classes-1.2.jar 

任何想法,請幫助。

回答

1

你應該添加到您的build.gradle:

android { 
    ... 
    packagingOptions { 
     pickFirst 'trust_root.bks' // add this 
    } 
} 
+0

我與'PICKFIRST '**/* * my.java.common.classes''和它不工作,你的解決方案測試它不't也可以工作 –

+0

文件路徑'trust_root.bks' – DeKaNszn

+0

它應該是什麼路徑? 'D:\ projects \ android \ my.tester.app \ my.java.common.classes \ build \ libs \ my.java.common.classes-1.0.jar \ trust_root.bks' –