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

时间:2016-01-20 12:35:46

标签: android-studio proguard

我的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也会高兴地抱怨它无法找到引用的类。 现在,如果使用的是-dontwarn org.ddogleg.solver.impl.WrapRealRootsSturm而不是-libraryjars过滤器,那么它正在运行。因此,至少我知道我正在编辑正确的文件...

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

1 个答案:

答案 0 :(得分:2)

将以下内容添加到您的proguard配置中:

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