gpt4 book ai didi

android - Gradle 排除或添加硬包含在库 classes.jar 中的 JAR 文件的引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:20 25 4
gpt4 key购买 nike

我在项目中包含的库遇到了一些问题:一开始它只是一个冲突的依赖关系问题,我通过排除解决了support-v4 是常用的共享模块。

问题是其中一个 lbsLib-release 似乎是在开发人员构建之前使用根项目内的普通 .jar 文件构建的。

通过运行 ./gradlew app:dependencies 我验证了构建图中没有引用依赖项。

我发现这个 support-v4 嵌入到 classes.jar 中位于:app/build/intermedites/exploded-aar/MyQaaAndroid/lbsLib-release/unspecified/classes.jar/ 如下图所示:

enter image description here

我无法自己重建项目,因为它不是开源库,所以有两个问题:

  1. 如果我将 compile 'com.android.support:support-v4:18.0.+' 添加到 build.gradle 一个 多个 dex文件 在构建时抛出错误,因此库被引用两次。

    UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/app/BackStackState;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)

    `

  2. 如果我删除所有需要 support-v4 的库,它会在应用程序运行时抛出缺少依赖项错误。

所以我想知道是否有可能从构建中排除这个 .jar 文件或使其他库依赖于 lbsLib-release 嵌入 support-v4 .jar.

compile (project(':lbsLib-release')) {
exclude module: 'support-v4'
}

compile ('com.sothree.slidinguppanel:library:2.0.4'){
exclude module: 'support-v4'
}

compile('com.google.android.gms:play-services:6.5.87') {
exclude module: 'support-v4'
}

最佳答案

尝试在根 build.gradle 中使用 resolutionStrategy ( API reference )。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}

allprojects {
repositories {
jcenter()
}
configurations.all((Closure) {
resolutionStrategy {
force 'com.android.support:support-v4:21.0.2' // your version of support library
}
})

}

关于android - Gradle 排除或添加硬包含在库 classes.jar 中的 JAR 文件的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27965690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com