簡體   English   中英

Intellij:避免“已定義多個Dex文件”

[英]Intellij: Avoiding 'Multiple Dex Files Defined'

問題:

到目前為止,我一直在使用Gradle處理我的所有依賴關系,並且似乎可以處理其他Gradle模塊之間的所有重復依賴關系。 但是,當jar中存在重復的依賴項時,情況似乎並非如此。

題:

考慮到我可以控制jar中的內容,使用Gradle處理這些依賴項沖突的最佳實踐是什么:

  1. 不要在jar中包含任何外部依賴項,請使用build.gradle將其包含在項目本身中

  2. 將所有外部依賴項包含在jar中,通過從項目build.gradle其刪除,以消除重復build.gradle 注意:這似乎不可擴展,例如,如果罐子本身之間存在重復項。)

  3. 更好的東西(希望可以自動處理)

編輯: build.gradle文件:

apply plugin: 'com.android.application'

android {
    signingConfigs {
        release { ... }
        debug { ... }
    }
    compileSdkVersion 19
    buildToolsVersion '19.1.0'
    defaultConfig { ... }
    buildTypes {
        release { ... }
        debug { ... }
    } 
    sourceSets {
        instrumentTest.setRoot('tests')
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:20.0.0'
    compile project(':jarModule')
}

導入具有本地應用程序中也具有依賴性的外部jars ,您可以執行以下兩項操作:

jar依賴項轉換為Gradle依賴項,並排除依賴項

例如:

testCompile('org.robospock:robospock:0.5.0')  {
     exclude module: "groovy-all" // <-- excludes groovy from robo spock
}

要么

在您的應用中刪除本地依賴項,並依靠.jar依賴項

例如,對於您與Gson的情況:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:20.0.0'
    compile project(':jarModule')
    // compile 'com.google.code.gson:gson:2.3.1' // <-- removed
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM