Cal*_* An 7 obfuscation android proguard dex
我有一个Android应用程序,我只是试图与Proguard混淆(因此,我有-dontoptimize -dontshrink -dontpreverify标志).当我使用Proguard构建时,proguard本身不会抛出任何错误,但是然后dex抛出以下异常:
Exception in thread "pool-1-thread-1" com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:810)
...
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Run Code Online (Sandbox Code Playgroud)
并且应用程序立即从NullPointerException崩溃.
我在Android Studio中使用最新版本的Proguard构建了默认的proguard文件和一些额外的-keep选项和-dontwarn选项.是什么原因引起了这个?谢谢!
小智 1
我在 Android Studio 中遇到了类似的问题。当执行“dex”将外部 Jar 转换为 dalvik 时,它发生了:
Error:Android Pre Dex: [SOX.jar]
com.android.dx.rop.cst.CstInterfaceMethodRef cannot
be cast to com.android.dx.rop.cst.CstMethodRef
Run Code Online (Sandbox Code Playgroud)
然后是一些对正在处理的字符串的模糊引用。升级了所有东西都没有用。
我最终发现被调用来进行一些次要字符串处理的方法之一已放置在接口中。这对于主流 java 来说工作得很好,但显然不适合 dex。当该方法移出接口并返回到众多类之一时,dex 并没有呕吐。
我的建议是仔细检查代码,寻找 dex 可能会遇到的更新或高级语言功能。我知道,没有太多帮助,这个错误让我所有的 Android 开发停滞了 2 个月。
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |