ANDROID应用程序的混淆打包

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

}

你可能感兴趣的:(android)