【问题标题】:Android : Exclude dependency for the application and use only by the other dependency which is using it internallyAndroid:排除应用程序的依赖项,仅由内部使用它的其他依赖项使用
【发布时间】:2021-11-28 05:10:24
【问题描述】:

我正在开发一个必须添加 XYZ 依赖项的项目。 XYZ 依赖在内部使用com.google.android.material:material,我没有在我的应用级别build.gradle 中直接添加com.google.android.material:material 依赖

现在,当我在我的项目中添加 XYZ 依赖项时,我的 UI 很混乱,因为 XYZ 依赖项使用了 com.google.android.material:material 依赖项。

我的问题是,如何排除 com.google.android.material:material 依赖项并仅在内部由 XYZ 使用该依赖项,以免我的 UI 变得混乱。

我知道我可以通过这种方式排除整个依赖:

    implementation ("XYZ:1.0.7") {
     exclude group: 'com.google.android.material', module: 'material'
}

但这也会从 XYZ 中删除 com.google.android.material,我不希望这样,因为 XYZ 在它的 UI 中需要这种依赖。我只想为我的应用程序删除它,以便我的应用程序的 UI 保持原样。

看这个:

在添加XYZ依赖之前(UI如预期):

添加XYZ依赖后(UI乱了):

【问题讨论】:

    标签: android gradle build.gradle


    【解决方案1】:

    您可以使用 jarjar tool 为依赖项 jar 排除一个类。

    Here是一个如何使用的例子

    ependencies {
            compile jarjar.repackage {
                from ('org.apache.hive:hive-exec:0.13.0.2.1.5.0-695') {
                    exclude group: 'net.hydromatic', module: 'optiq-core'
                    // transitive = false
                }
    
                archiveBypass "commons*.jar"
                archiveExclude "slf4j*.jar"
    
                classDelete "org.apache.thrift.**"
    
                classRename 'org.json.**', 'org.anarres.hive.json.@1'
                classRename 'org.iq80.**', 'org.anarres.hive.iq80.@1'
                classRename 'org.codehaus.jackson.**', 'org.anarres.hive.jackson.@1'
                classRename 'com.google.**', 'org.anarres.hive.google.@1'
                classRename 'javolution.**', 'org.anarres.hive.javolution.@1'
                classRename 'com.esotericsoftware.kryo.**', 'org.anarres.hive.kryo.@1'
            }
        }
    

    【讨论】:

    • 我无法实现它,因为找不到合适的示例而出现错误。我该如何使用它?假设我有一个库“io.supercharge:shimmerlayout:2.1.0”并且我想排除“com.google.android.material:material:1.1.0”那么我该如何在 gradle 文件中实现它?
    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 2018-03-26
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2014-05-05
    相关资源
    最近更新 更多