美文网首页程序员
Proguard问题排除(Android)

Proguard问题排除(Android)

作者: DeanWang | 来源:发表于2016-02-16 12:36 被阅读389次

    讨厌写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;看下混淆后想保留的信息是不是真的保留了。

    相关文章

      网友评论

        本文标题:Proguard问题排除(Android)

        本文链接:https://www.haomeiwen.com/subject/hcipkttx.html