我正在编写2个Android库。当我对两者进行混淆时,它们两者中的混淆代码都包含一个名为a.a.a.a.a
的类,当尝试在同一应用程序中同时使用这两个库时,它将导致以下错误:
在模块classes.jar(lib1)和classes.jar(lib2)中找到重复的类a.a.a.a
如何防止Proguard
混淆前三个软件包的结尾:
[my.domain.lib1.a.a
和my.domain.lib2.a.a
?
编辑:混淆是在构建库时发生的,而不是在构建应用程序时发生的。
这意味着在运行时,您对两个库的依赖结果都与proguard给出的名称相同。为避免此问题,请尝试使用如下所示:
android {
...
configurations {
all*.exclude module: 'support-v4'
// This removes all other versions of `support-v4`
// if it gets duplicated from all the artifacts.
}
...
}
我已经在v4上遇到了这个问题...它可能与您的代码中的其他内容有关。.但是主要是在v4中发生的。有关更多知识:https://discuss.gradle.org/t/how-do-i-exclude-specific-transitive-dependencies-of-something-i-depend-on/17991