如何使用过滤器在 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.**
我的 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.**