android应用程序的混淆打包 1.在工程文件project.properties中加入下proguard.config=proguard.cfg,如下所示:

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*;

}

更多相关文章

  1. android中SharedPreference的使用
  2. 日拱一卒(十七)
  3. Android基于HttpUrlConnection类的文件下载实例代码
  4. Android版本适配:9.0 Pie(API级别28)
  5. Android(安卓)stdio 3.0以上版本将图片文件存入模拟器教程
  6. Android中读取properties文件1
  7. Android(安卓)Studio 将项目打成JAR包
  8. Android实现选择本地音乐
  9. Android(安卓)为【apk】文件签名,增加修改系统时间等权限

随机推荐

  1. Android(安卓)验证码输入框 连续性粘贴
  2. android问题解答
  3. android 解析xml字符串
  4. Android获取应用自身相关签名信息
  5. android视频截图
  6. Android(安卓)MediaPlayer基本知识
  7. Android(安卓)之 ProgressDialog用法介绍
  8. 【Android】Activity遮罩效果的实现
  9. Android(安卓)APP 版本更新通知代码
  10. [置顶] Android加载数据过程中的菊花显示