在我的项目中,我需要导入第三方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'
}
陷入类似的情况。这就是我所做的,并不像我希望的那样优雅,但它有效:
希望它有效......