Android打包混淆规范.doc
文本预览下载声明
混淆打包
android应用程序的混淆打包
1.在工程文件perties中加入下proguard.config=proguard.cfg , 如下所示:
target=android-8
proguard.config=proguard.cfg
Eclipse会通过此配置在工程目录生成proguard.cfg文件第三方包导致打包不成功,或者打包成功不能运行的情况
首先加入-dontwarn//不用输出警告
-dontwarn com.slidingmenu.lib.app.**
-dontwarn com.actionbarsherlock.app.**
-dontwarn android.support.v4.**
-dontwarn com.slidingmenu.lib.**
-dontwarn cn.sharesdk.**
指明lib包的在工程中的路径,,,-libraryjars后面跟要编译in.jar的其它类包,如果是多个,用多行列出
-libraryjars libs/gson-2.2.2.jar
-keep 后跟项目的入口类
-keep class universal-image-loader-1.8.4-with-sources.** { *; }
-keep interface universal-image-loader-1.8.4-with-sources.** { *; }
-keep class lockSDK_3.3.** { *; }
-keep interface lockSDK_3.3.** { *; }
-keep class MobileProbe.jar.** { *; }
-keep interface MobileProbe.jar.** { *; }
-keep class .http.SslError
-keep class android.webkit.**{*;}
-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
keep就是 告诉proguard不用混淆这个包里面的类
如果加了android.support包的话,那么要加上
-libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { ; }
如果加了gson包的话,那么要加上
-libraryjars libs/gson-2.2.2.jar
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.* { ; }
-keep class com.google.gson.examples.android.model.* { ; }
-keep class com.google.gson.* { *;}
如果的话,那么要加上
-keep public class * implements java.io.Serializable{
public protected private *;
}
如果的话,比如空指针异常,或者是反射的时候报错是不是实体类被混淆了。导致找不到实体类无法get或者set,那么要加上
-keep public class mypackage.MyBean { public void setMyProperty(int); public int getMyProperty();}
最后,我们看一看混淆的过程
-libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { ; }
解释:
-libraryjars指明lib包的在工程中的路径而-dontwarn android.support.v4.**和-keep class android.support.v4.** { ; }这两个参数用来保持第三方库中的类而不乱,将-dontwarn和-keep 结合使用,意思是保持android.support.v4.** { ; },这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到android.support.v4.** { ; }这个包里面的类的相关引用
显示全部