美文网首页
Android 混淆相关

Android 混淆相关

作者: 珊珊宝贝Catherine | 来源:发表于2018-04-03 15:26 被阅读39次

    Android 混淆原则

    反射用到的类不混淆
    JNI方法不混淆
    AndroidMainfest中的类不混淆,四大组件和Application的子类和Framework层下所有的类默认不会进行混淆
    Parcelable的子类和Creator静态成员变量不混淆,否则会产生android.os.BadParcelableException异常
    使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
    使用第三方开源库或者引用其他第三方的SDK包时,需要在混淆文件中加入对应的混淆规则
    有用到WEBView的JS调用也需要保证写的接口方法不混淆
    

    混淆 ProGuard常用语法

    -libraryjars class_path 应用的依赖包,如android-support-v4  
    -keep [,modifier,...] class_specification 不混淆某些类  
    -keepclassmembers [,modifier,...] class_specification 不混淆类的成员  
    -keepclasseswithmembers [,modifier,...] class_specification 不混淆类及其成员  
    -keepnames class_specification 不混淆类及其成员名  
    -keepclassmembernames class_specification 不混淆类的成员名  
    -keepclasseswithmembernames class_specification 不混淆类及其成员名  
    -assumenosideeffects class_specification 假设调用不产生任何影响,在proguard代码优化时会将该调用remove掉。如system.out.println和Log.v等等  
    -dontwarn [class_filter] 不提示warnning  
    

    混淆基本指令

    # 设置混淆的压缩比率 0 ~ 7
    -optimizationpasses 5
    # 混淆后类名都为小写   Aa aA
    -dontusemixedcaseclassnames
    # 指定不去忽略非公共库的类
    -dontskipnonpubliclibraryclasses
    #不做预校验的操作
    -dontpreverify
    # 混淆时不记录日志
    -verbose
    # 混淆采用的算法.
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    #保留代码行号,方便异常信息的追踪
    -keepattributes SourceFile,LineNumberTable
    
    #dump文件列出apk包内所有class的内部结构
    -dump class_files.txt        
    #seeds.txt文件列出未混淆的类和成员
    -printseeds seeds.txt
    #usage.txt文件列出从apk中删除的代码
    -printusage unused.txt
    #mapping文件列出混淆前后的映射
    -printmapping mapping.txt
    

    相关文章

      网友评论

          本文标题:Android 混淆相关

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