android应用程序的混淆打包(转)
target=android-8
proguard.config=proguard.cfg
Eclipse会通过此配置在工程目录生成proguard.cfg文件
2.生成keystore(如已有可直接利用)
按照下面的命令行在D:\ProgramFiles\Java\jdk1.6.0_07\bin>目录下,输入keytool-genkey-aliasandroid.keystore-keyalgRSA-validity100000-keystoreandroid.keystore
参数意义:-validity主要是证书的有效期,写100000天;空格,退格键都算密码。
命令执行后会在D:\ProgramFiles\Java\jdk1.6.0_07\bin>目录下生成android.keystore文件。
3.在Eclipce的操作
File->Export->ExportAndroidApplication->Selectproject->Usingtheexistingkeystore,andinputpassword->selectthedestinationAPKfile
经过混淆后的源代码,原先的类名和方法名会被类似a,b,c。。。的字符所替换,混淆的原理其实也就是类名和方法名的映射。
但4大组件并没有混淆(所有在清单文件定义的组件不能被混淆),因为系统需要通过清单文件来查找和运行应用程序。
proguard.cfg 文件代码解读
-optimizationpasses5 ->设置混淆的压缩比率0~7
-dontusemixedcaseclassnames->AaaA
-dontskipnonpubliclibraryclasses->如果应用程序引入的有jar包,并且想混淆jar包里面的class
-dontpreverify
-verbose->混淆后生产映射文件map类名->转化后类名的映射
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/* ->混淆采用的算法.
-keeppublicclass*extendsandroid.app.Activity ->所有activity的子类不要去混淆
-keeppublicclass*extendsandroid.app.Application
-keeppublicclass*extendsandroid.app.Service
-keeppublicclass*extendsandroid.content.BroadcastReceiver
-keeppublicclass*extendsandroid.content.ContentProvider
-keeppublicclass*extendsandroid.app.backup.BackupAgentHelper
-keeppublicclass*extendsandroid.preference.Preference
-keeppublicclasscom.android.vending.licensing.ILicensingService
-keepclasseswithmembernamesclass*{
native<methods>; ->所有native的方法不能去混淆.
}
-keepclasseswithmembersclass*{
public<init>(android.content.Context,android.util.AttributeSet);
-->某些构造方法不能去混淆
}
-keepclasseswithmembersclass*{
public<init>(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembersclass*extendsandroid.app.Activity{
publicvoid*(android.view.View);
}
-keepclassmembersenum*{ ->枚举类不能去混淆.
publicstatic**[]values();
publicstatic**valueOf(java.lang.String);
}
-keepclass*implementsandroid.os.Parcelable{ ->aidl文件不能去混淆.
publicstaticfinalandroid.os.Parcelable$Creator*;
}
更多相关文章
- android中SharedPreference的使用
- 日拱一卒(十七)
- Android基于HttpUrlConnection类的文件下载实例代码
- Android版本适配:9.0 Pie(API级别28)
- Android(安卓)stdio 3.0以上版本将图片文件存入模拟器教程
- Android中读取properties文件1
- Android(安卓)Studio 将项目打成JAR包
- Android实现选择本地音乐
- Android(安卓)为【apk】文件签名,增加修改系统时间等权限