Dit*_*mon 3 obfuscation android proguard
我已经混淆了Lite和一个完整的项目,它们都引用了一个库项目。在运行时,我收到“ NoSuchMethodException myMethod”错误
根据http://proguard.sourceforge.net/index.html#/manual/troubleshooting.html,我必须在proguard.cfg中添加以下内容
-keep class mypackage.MyClass { void myMethod(); }
Run Code Online (Sandbox Code Playgroud)
我的方法返回一个String并接受3个String参数,因此我在proguard.cfg中添加了以下内容
-keep public class com.mycompany.appName.MyClass {
String myMethod(String, String, String);
}
Run Code Online (Sandbox Code Playgroud)
但是我仍然遇到同样的错误。
假设我正在构建精简版com.mycompany.appName.lite,我假设我不必在添加到proguard.cfg的行中更改软件包名称,因为它是一个引用的库。
有什么我想念的吗?谢谢。
我发现调试ProGuard是不可思议的事情,您可能需要验证keep参数是否确实在按预期进行。
我一直在使用我创建的探测方法:
http://code.google.com/p/android-beryl/source/browse/beryl-core/src/org/beryl/diagnostics/Log.java
Log.inspectClass(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
然后,我要做的就是监视转储到LogCat的类定义。您也可以查看proguard /目录中的文件以了解发生了什么。但是我觉得这很困难。
对于您的情况,我会从一个非常宽松的地方开始,先保留所有内容,然后再努力加强课堂教学。
-keep class com.mycompany.appName.MyClass {
*;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3341 次 |
| 最近记录: |