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(安卓)自定义View及其在布局文件中的使用示例(二)
  2. Android出现“Read-only file system”解决办法
  3. android创建文件夹
  4. Android(安卓)studio Day01-2&3
  5. Android(安卓)为【apk】文件签名,增加修改系统时间等权限
  6. Android(安卓)设置View 圆角
  7. Android(安卓)SDK下载和更新失败的解决方法!!!
  8. Android(安卓)开发最佳实践
  9. NPM 和webpack 的基础使用

随机推荐

  1. android 计算器(2)
  2. android 数据库同步
  3. Android Studio怎样清空ArrayList
  4. 设置 listview 滚动条样式
  5. Android 4+ WIFI 直连
  6. adb - api -android
  7. Android中的Adapter
  8. Android Build: Tips and Tricks
  9. Pair 了解一下
  10. android 自定义progressbar进度条颜色