讨厌写proguard rule
但是又不得不写
小几百日活的APP都马上有山寨APP挂一堆广告重新上传
NMB。
好好写proguard rule文件。
好处至少有如下几点:
1 防止山寨,如果APP有线服务,在线服务应该做版本合法性判断
低于正常版本做更新提示,高于正常版本判断非法,拒绝提供服务
然而客户端代码如果被反了,然后改了相关代码,可能也没什么卵用
2 应用包体积或多或少会减少
proguard容易出问题无非是native method、反射等导致需要保持一些类、方法、成员变量;proguard相关写法不介绍了,搜索引擎上狠详细。
如果Proguard前应用能正常运行,Proguard后崩溃怎么定位和解决问题?
1 Proguard文件加上下面两行
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
如果不加这两行,崩溃信息只有一个类名,没有源码行数信息,而由于类名被混淆,很难定位崩溃代码位置;
2 找到mapping文件,使用Android Studio打包,mapping文件在module目录下build/outputs/mapping/渠道名称/release(debug)/mapping.txt;eclipse的话,找搜索引擎吧
3 根据Logcat打印出来的错误信息,首先根据mapping文件搜索崩溃发生在哪个文件,然后根据行数信息定位具体错误代码。
如果你手头还有dex2jar、jd-gui这样的工具(没有建议搜下下载),那么可以反编译下classes.dex;看下混淆后想保留的信息是不是真的保留了。