Android混淆打包
2014-05-05 17:21
141 查看
混淆原理:类名和方法名的映射转化,混淆是可逆的(算法很多,不易逆)。
混淆好处:混淆代码,增强安全性;减少代码体积,提高运行效率。
混淆打包配置文件:proguard-android.txt, proguard-project.txt
ADT会在project.properties生成相应的配置(默认被注释):proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
不混淆情况:
(1)四大组件(Activity、Service、Receiver、Provider)
(2)native方法
proguard.cfg配置项目:
-optimizationpasses 5 设置混淆的压缩比率(5~7)
-dontusemixedcaseclassnames 不使用混淆大小写的类名
-dontskipnonpubliclibraryclasses 如果应用程序引用了jar包,并且想混淆jar包里面的class
-dontpreverity
-verbose 混淆后产生映射文件
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 混淆采用的算法
-keep public class * extends android.app.Activity 所有activity子类不混淆(抽取onCreate中的代码,提高混淆的程度)
-keep public class * extends android.app.Application 同上
-keep public class * extends android.app.Service 同上
-keep public class * extends android.content.BroadcastReceiver 同上
-keep public class * extends android.content.ContentProvider 同上
-keep public class * extends android.app.backup.BackupAgentHelper 同上
-keep public class * extends android.preference.Preference 同上
-keep public class com.android.vending.licensing.ILicensingService 同上
-keepclasseswithmembernames class * {
native <methods>; 所有native的方法不混淆
}
-keepclasseswithmembers class * {
pulbic <init>(android.content.Context, android.util.AttributeSet); 构造方法不混淆
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implement android.os.Parcelable {
public static final android.os.Parcelable&Creator *;
}
参考资料:http://proguard.sourceforge.net/
混淆好处:混淆代码,增强安全性;减少代码体积,提高运行效率。
混淆打包配置文件:proguard-android.txt, proguard-project.txt
ADT会在project.properties生成相应的配置(默认被注释):proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
不混淆情况:
(1)四大组件(Activity、Service、Receiver、Provider)
(2)native方法
proguard.cfg配置项目:
-optimizationpasses 5 设置混淆的压缩比率(5~7)
-dontusemixedcaseclassnames 不使用混淆大小写的类名
-dontskipnonpubliclibraryclasses 如果应用程序引用了jar包,并且想混淆jar包里面的class
-dontpreverity
-verbose 混淆后产生映射文件
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 混淆采用的算法
-keep public class * extends android.app.Activity 所有activity子类不混淆(抽取onCreate中的代码,提高混淆的程度)
-keep public class * extends android.app.Application 同上
-keep public class * extends android.app.Service 同上
-keep public class * extends android.content.BroadcastReceiver 同上
-keep public class * extends android.content.ContentProvider 同上
-keep public class * extends android.app.backup.BackupAgentHelper 同上
-keep public class * extends android.preference.Preference 同上
-keep public class com.android.vending.licensing.ILicensingService 同上
-keepclasseswithmembernames class * {
native <methods>; 所有native的方法不混淆
}
-keepclasseswithmembers class * {
pulbic <init>(android.content.Context, android.util.AttributeSet); 构造方法不混淆
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implement android.os.Parcelable {
public static final android.os.Parcelable&Creator *;
}
参考资料:http://proguard.sourceforge.net/
相关文章推荐
- 解决android应用引用第三方jar包混淆打包报错
- Android资源混淆打包方案
- [置顶] Android开发之反编译、apk重新打包、apk混淆、apk对齐与不对齐、jar混淆、proguard
- android开发之应用打包签名混淆流程
- Android混淆打包
- android打包混淆
- android小知识——Android混淆打包及混淆后运行错误
- Android Studio多渠道打包和代码混淆教程
- android代码签名和混淆打包
- Android 混淆打包标准proguard 配置
- Android笔记(七):app混淆签名打包过程记录
- Android笔记--Android Studio 引用第三方开源类okhttp、gson库时的打包混淆
- Android混淆打包zz
- Android 混淆打包
- Android混淆打包和APK反编译
- Android 混淆打包不混淆第三方jar包
- android应用程序的混淆打包
- Android自带混淆打包在windows下的一个问题
- android ant多渠道混淆打包
- ANDROID应用程序的混淆打包