其他分享
首页 > 其他分享> > 如何修复Android上的proguard NoSuchMethodException

如何修复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