在Gradle Android Studio中排除一个类文件

问题描述 投票:0回答:2

在我的项目中,我需要导入第三方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'
}

它不起作用并显示相同的错误。

java android gradle facebook-sdk-4.x
2个回答
1
投票

依赖项的配置闭包的exclude方法排除了传递依赖项。因此,如果您的模块依赖项依赖于其他模块,则可以从构建中排除它们。您可以在'com.facebook.android:facebook-android-sdk:4.14.0'上查看Maven repository info page模块的传递依赖性。

如果BundleJSONConverter类存在于传递依赖项中,则可以使用与现在尝试相同的方式排除特定模块。只需指定groupmoduleversion,就像你为依赖所做的那样。

如果您只想为依赖项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'
}

1
投票

陷入类似的情况。这就是我所做的,并不像我希望的那样优雅,但它有效:

  1. 重命名jar文件(在你的情况下为SkinSDK.jar):. zip而不是.jar
  2. 转到zip文件的“内部”(我正在使用DoubleCommander,还有许多其他实用程序),或将其解压缩到临时文件夹。
  3. 删除导致问题的重复类。转到zip文件的“外部”。
  4. 将文件从.zip重命名(或重新打包)到.jar。编译。

希望它有效......

© www.soinside.com 2019 - 2024. All rights reserved.