如何修复Android上的proguard NoSuchMethodException
作者:互联网
我已经混淆了Lite和一个引用库项目的完整项目.在运行时,我收到“NoSuchMethodException myMethod”错误
根据http://proguard.sourceforge.net/index.html#/manual/troubleshooting.html,我必须在proguard.cfg中添加以下内容
-keep class mypackage.MyClass { void myMethod(); }
我的方法返回一个String并接受3个String参数,因此我将以下内容添加到proguard.cfg中
-keep public class com.mycompany.appName.MyClass {
String myMethod(String, String, String);
}
但我仍然得到同样的错误.
假设我正在构建精简版com.mycompany.appName.lite,我假设我不必更改添加到proguard.cfg的行中的包名,因为它是一个引用的库.
有什么我想念的吗?谢谢.
解决方法:
我发现调试ProGuard是黑魔法,您可能需要验证保持参数实际上是否正在执行他们想要的操作.
我一直在使用我创建的探测方法:
http://code.google.com/p/android-beryl/source/browse/beryl-core/src/org/beryl/diagnostics/Log.java
Log.inspectClass(MyClass.class);
然后我做的是监视转储到LogCat的类定义.您还可以查看proguard /目录中的文件以找出发生的情况.但我发现这很困难.
在你的情况下,我会先从一个非常松散的方法开始,然后继续努力收紧课程.
-keep class com.mycompany.appName.MyClass {
*;
}
标签:android,proguard,obfuscation 来源: https://codeday.me/bug/20190903/1796222.html