在Gradle Android Studio中排除一个类文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Gradle Android Studio中排除一个类文件相关的知识,希望对你有一定的参考价值。
在我的项目中,我需要导入第三方jar文件和Facebook SDK。
compile files('libs/SkinSDK.jar')
compile 'com.facebook.android:facebook-android-sdk:4.14.0'
两者都包括相同的BundleJSONConverter
类。所以,我不能生成签名APK。它总是显示重复的条目com / facebook / internal / BundleJSONConverter。
所以,我想在Facebook或SkinSDK.jar中排除。我尝试过
compile ('com.facebook.android:facebook-android-sdk:4.14.0') {
exclude group: 'com.facebook.internal', module: 'BundleJSONConverter'
}
它不起作用并显示相同的错误。
依赖项的配置闭包的exclude
方法排除了传递依赖项。因此,如果您的模块依赖项依赖于其他模块,则可以从构建中排除它们。您可以在'com.facebook.android:facebook-android-sdk:4.14.0'
上查看Maven repository info page模块的传递依赖性。
如果BundleJSONConverter
类存在于传递依赖项中,则可以使用与现在尝试相同的方式排除特定模块。只需指定group
,module
和version
,就像你为依赖所做的那样。
如果您只想为依赖项jar排除一个类,请查看jar jar links工具及其Gradle插件。它允许您更改包含的罐子,例如更改包或删除类。
以下(shortened) example显示了插件的用法以及一些改变依赖jar的方法:
compile jarjar.repackage {
from 'org.apache.hive:hive-exec:0.13.0.2.1.5.0-695'
archiveBypass "commons*.jar"
archiveExclude "slf4j*.jar"
classDelete "org.apache.thrift.**"
classRename 'org.json.**', 'org.anarres.hive.json.@1'
}
陷入类似的情况。这就是我所做的,并不像我希望的那样优雅,但它有效:
- 重命名jar文件(在你的情况下为SkinSDK.jar):. zip而不是.jar
- 转到zip文件的“内部”(我正在使用DoubleCommander,还有许多其他实用程序),或将其解压缩到临时文件夹。
- 删除导致问题的重复类。转到zip文件的“外部”。
- 将文件从.zip重命名(或重新打包)到.jar。编译。
希望它有效......
以上是关于在Gradle Android Studio中排除一个类文件的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )
如何在 gradle kts 中排除(忽略)android 构建变体
在 Android Gradle 构建中,如何从包含的 jar 文件中排除依赖项?
Android Gradle 插件Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )