代码混淆常见错误

1、Proguard returned with error code 1. See console更新proguard版本android-support-v4 不进行混淆添加缺少相应的库2、使用gson包解析数据时,出现missing type parameter异常在 proguard.cfg中添加?1-dontobfuscate

-dontoptimize

在 proguard.cfg中添加?1# removes such information by default, so configure it to keep all of it.

-keepattributes Signature

# Gson specific classes

-keep class sun.misc.Unsafe { *; }

#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson

-keep class com.google.gson.examples.android.model.** { *; }

3、类型转换错误?1-keepattributes Signature 4、空指针异常混淆过滤掉相关类与方法5、安卓代码混淆与反射冲突,地图无法显示等问题解决及反编译方法,安卓反编译此前的代码混淆,因为并没有用到反射,所以常规的代码混淆方式一遍就能通过,而此项目中某些类利用到了反射机制(本人的这个项目中有即时通讯功能,所以有表情类资源,因此需要通过反射由文件名找到表情资源id),当由文件名去寻找资源id时就报空指针异常了,期初我并不知道什么原因,通过反编译已经混淆的apk,一步一步寻找到出错的地方,才恍然大悟,正是反射那一步出现了问题:Field field = R.drawable.class.getDeclaredField(name);走到这一步就挂了,程序直接崩溃。解决办法:在proguard.cfg文件中,将反射用到的类中的变量不被混淆:?1如:-keep public class com.byl.bean.Expressions { *; },表示Expressions 这个类及类中的所有变量及方法不被混淆,注意要写全路径;过滤泛型:?1-keepattributes Signature最重要的一点:保持R文件不被混淆,否则,你的反射是获取不到资源id的?1-keep class **.R$* {*;}补充一下:上个问题解决后,接下来又遇到了一个问题就是混淆后,地图无法正常使用了,博主使用的是百度地图,在proguard.cfg也已经写明了:?12-keep class com.baidu.** {*;}-keep class vi.com.** {*;}6、android.provider.Settings$Global?12# Project target.target=android-197、java.lang.reflect.UndeclaredThrowableException?1-keep interface com.dev.impl.**8、内存溢出和无法写入堆栈?123javaOptions in proguard := Seq(...)orjavaOptions in (Proguard, proguard) := Seq(...) 9、Error: Unable to access jarfile ..libproguard.jar路径问题10、java.lang.NoSuchMethodError没有相关方法,方法被混淆了,混淆过滤掉相关方法便可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,179评论 25 709
  • 1.首先需要在app下的build.gradle下配置,true表示编译时会混淆代码\ 2.在proguard-r...
    Thomas_yy阅读 11,661评论 0 6
  • 什么是代码混淆 代码混淆就是将代码中的各种元素,如变量,方法,类和包的名字改写成无意义的名字,增加项目反编译后被读...
    蜗牛家族史阅读 10,583评论 1 4
  • 5分钟搞定android混淆 前言 混淆是上线前挺重要的一个环节。android使用的ProGuard,可以起到压...
    garyhu1阅读 4,123评论 0 1
  • 2017.2.13 不是今天烧的火,多久之前了已经忘了,反正当时是想写点东西的,回到家懒得动笔又给拖拖拖到现在。 ...
    呦呵呀哈阅读 1,742评论 0 0