Android 混淆打包以及常见问题

来源:互联网 发布:针对淘宝店主调查问卷 编辑:程序博客网 时间:2024/06/05 13:28

        在网上看了很多关于android混淆打包的帖子,但是真正能解决问题的很少,特别对于版本较高的android项目。本篇主要解决混淆打包出现的问题以及打包签名之后出现问题。

      在高版本的android项目中,里边没有了proguard.cfg,取而代之的是proguard-project.txt

     我们需要在project.properties中添加上这行代码

     proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

      然后所有的混淆都在这个proguard-project.txt文件里进行说明:

      一、首先我们不需要混淆第三方的东西,只需要混淆自己写的代码就行了。这点很重要,不然很容易出错哦

      二、如何不混淆第三方,这才是关键

      如果引入了第三方的library中包含jar,我们也不让他们混淆,防止混淆出错

引入方法:

     -libraryjars ../第三方库的工程名/libs/**.jar

      例:

      -libraryjars ../duoshuo-android-sdk/libs/jackson-annotations-2.2.3.jar

      如果直接引入的是sdk的jar包,引入方法:

      #(声明lib文件)-libraryjars **.jar 
      #(不提示警告)-dontwarn com.xx.xxx.** 
      #(不进行混淆)-keep class com.xx.xxx.** { *;} 

     三、常见问题

          1.保持泛型不被混淆

          -keepattributes Signature

          2.ExceptionInitializerError错误,原因:是由于类初始化的时候发生了异常,有可能人家用到了类的注解,而Produard在混淆优化的时候把注解去掉了,解决办法:在Proguard里面加上注解保护

         -keepattributes *Annotation*

          3.不混淆R文件

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

  包含了友盟的、信鸽、apache,大家可以借鉴一下

          proguard-project.txt 文件下载地址:

  http://download.csdn.net/detail/shr957250701/7749043






0 0