zoukankan      html  css  js  c++  java
  • 混淆注意事项

     从SDK2.3开始在android-sdk-windows ools下面多了一个proguard文件夹,proguard是一个java代码混淆的工具,不过代码混淆不能混淆xml的布局文件,混淆的是JAVA文件。

        1、在eclipse中,android 2.3开始支持这个功能;

        2、另一种是使用脚本如ant 

    混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。

     

          1、默认混淆文件 proguard.cfg文件, google默认不混淆 Activity Service ... 类的 子类, 所有 activity 的子类 名称是被保留的。让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

          混淆中保留了继承自ActivityServiceApplicationBroadcastReceiverContentProvider等基本组件以及com.android.vending.licensing.ILicensingService并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。

         2android sdk目录在带有空格的目录名称的子目录下无法混淆  去掉空格就好了

         3、依赖包混淆带来的麻烦,最好全部保留不混淆。例如

         -keep class com.badlogic.** { *; }

         -keep class * implements com.badlogic.gdx.utils.Json*

         -keep class com.google.** { *; }

         4. jni反调java方法

          这些类或方法同样可能会被proguard认为没有调用过而被除掉, 或都被改名. 这些方法最好统一写在一个类中, 然后这个类不作优化, 或是找出所有jni调用过的类与方法, proguard.cfg中配置, 不对它们作优化

         5. 其它反射调用的java类与方法

          使用反射时一定要注意proguard可能会认为那些方法未被调用过, 会在代码优化过程中将它们改名或除去. 在使用反射的地方一定要在proguard.cfg中配置, 不优化反射调用过的类和方法。

    比较常见的是写在视图xml中的onClick响应出错. 因为写在xml中的onClick是通过反射调用的, proguard认为它们没有在代码中被调用过, 所以将它们从代码中除掉或改名了.

    解决方法:在proguard.cfg中添加以下代码, 就可以防止被配在视图xml中的onClick方法被proguard优化掉。

    -keepclassmembers class * extends android.app.Activity {

    public void *(android.view.View);

    }

     我们公司目前的批量打包脚本注意事项:

         7 如果是引用第三方jar应注意查看jar包里是否有assets资源文件夹如果有应用将assets文件夹中的资源copy到项目中的assets文件夹下这样混淆后才不会出错proguard优化过后会产生一些文件

    dump.txt  描述.apk文件中所有类文件间的内部结构

         8   客户端利用友盟的分享功能做第三方分享,但客户端混淆打包后,分享功能会报一些resource找不到的问题。这是因为友盟分享功能会用反射的方法去找自己需要的资源文件。被混淆后当然报错。

    解决方式:可以在混淆配置文件中添加:

    -keep class **.R$* {
     *;
    }

    mapping.txt  列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。

    对应公司里产生的.map文件

    seeds.txt  列出了未被混淆的类和成员

    usage.txt  列出了从.apk中删除的代码

     

     

     
  • 相关阅读:
    【BZOJ5306】【HAOI2018】—染色(组合数学+NTT)
    【SCOI2018】—Numazu 的蜜柑(二次剩余)
    【SCOI2018】—Numazu 的蜜柑(二次剩余)
    多测师讲解自动化测试_rf节课内容_高级讲师肖sir
    多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir
    多测师讲解自动化 _rf自动化需要总结的问题(2)_高级讲师肖sir
    多测师讲解selenium--常用关键字归纳-_高级讲师肖sir
    多测师讲解自动化测试_rf测试报告_高级讲肖sir
    多测师讲解自动化测试_rf运行无日志(解决方法)_高级讲肖sir
    多测师讲解rf--定位元素--高级讲师肖sir
  • 原文地址:https://www.cnblogs.com/renkangke/p/3160581.html
Copyright © 2011-2022 走看看