如何使用过滤器在 Android Studio 中使用 ProGuards -libraryjars?

How to get ProGuards -libraryjars with filter working in Android Studio?

我的 build.gradle 文件包含以下依赖项:

compile files('../libs/ddogleg-0.8.jar')

该应用程序在禁用 ProGuard 的情况下完美运行。启用 ProGuard 后,大量如下所示的警告会破坏构建:

Warning: org.ddogleg.solver.impl.WrapRealRootsSturm: can't find referenced class org.ejml.data.Complex64F

根据 http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass 上的 ProGuard 文档,应该使用 -libraryjars 过滤器解决此问题,如下所示:

-libraryjars ../libs/ddogleg-0.8.jar(!org/ddogleg/solver/impl/WrapRealRootsSturm.class)

问题是,即使指定了过滤器,ProGuard 也一直高兴地抱怨找不到引用的 class。 现在,如果使用 -dontwarn org.ddogleg.solver.impl.WrapRealRootsSturm 而不是 -libraryjars 过滤器,它就可以工作了。因此至少我知道我正在编辑正确的文件...

很明显我做错了。您对如何使 -libraryjars 过滤器起作用有任何想法吗? 感谢您的支持。

将以下内容添加到您的混淆器配置中:

-keep class org.ejml.** { *; }
-dontwarn org.ejml.**
-keep class org.ddogleg.** { *; }
-dontwarn org.ddogleg.**