Android 代码混淆(IDE 用的是 android studio2.3)
2017-03-13 17:16
405 查看
这里写的是我自己对代码混淆的一些理解,如果大牛看到有不对的地方 还请多指教!混淆怎么说呢,就是为了让你的APK 不会让别人解压后用gui等之类的软件秒解,自己辛辛苦苦写了几个月,别人几天搞定了,是不是很伤,废话不多说直接上代码,代码里边有详细解释。
然后我们有反编译看看 混淆过的代码啥样子
buildTypes { release { // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "false" //Zipalign优化 zipAlignEnabled true // 移除无用的resource文件 // shrinkResources true //混淆 moren默认是false 是不混淆 设置设置 true开启混淆 minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }-renamesourcefileattribute SourceFile -optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontskipnonpubliclibraryclasses # 是否混淆第三方jar -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 -dontwarn -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -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 方法不被混淆 native ; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); # 保持自定义控件类不被混淆 } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } ##--------------------------------------------以上配置 一般 不会变------------------------------------ #如果有引用v4包可以添加下面这行 -keep class android.support.v4.** { *; } -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment #如果引用了v4或者v7包 -dontwarn android.support.** -keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...); } #保持自定义组件不被混淆 -keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...); } #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable #保持 Serializable 不被混淆并且enum 类也不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } #自己项目特殊处理代码(这些地方我使用了Gson类库和注解,所以不希望被混淆,以免影响程序) -keep class com.otb.designerassist.entity.** {*;} -keep class com.otb.designerassist.http.rspdata.** {*;} -keep class com.otb.designerassist.service.** {*;} ###-------- Gson 相关的混淆配置-------- -keepattributes Signature -keepattributes *Annotation* -keep class sun.misc.Unsafe { *; } ###------------极光推送混淆配置(官网有混淆配置的说明)-------------------------- -dontoptimize -dontpreverify -keepattributes EnclosingMethod,Signature -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; } -keepclassmembers class ** { public void onEvent*(**); } ###------------bageview 混淆配置-------------------------- -keep class com.jauker.widget.** {*;} ###------------imageloader 混淆配置-------------------------- -keep class com.nostra12.universalimageloader.** {*;} ###---------------bean 不混淆-------------- -keep class com.cjy.hrapp.hrapp.bean.*{*;} ####-----------------字典 moudle不混淆------------ -dontwarn solid.ren.skinlibrary.** -keep class solid.ren.skinlibrary.*{*;} empty
然后我们有反编译看看 混淆过的代码啥样子
相关文章推荐
- Android 2.3(同样适用于之前的版本) 代码混淆proguard技术介绍
- Android2.3支持混淆Android代码
- AndroidStudio代码混淆
- Android2.3 proguard介绍---代码混淆技术
- Android studio aar 生成 和代码混淆
- androidSdk2.3的proguard混淆代码工具,防止反编译
- Android Studio多渠道打包和代码混淆教程
- android studio代码混淆注意问题
- 什么是代码混淆?andriod和android-studio工程如何启用代码混淆功能?
- Android Studio多渠道打包和代码混淆教程
- Android 2.3 代码混淆proguard技术介绍
- Android Studio多渠道打包和代码混淆教程
- Android 2.3 代码混淆proguard技术介绍 收藏
- Android 2.3 代码混淆proguard技术介绍
- Android 2.3 代码混淆proguard技术介绍
- Android 2.3 代码混淆proguard技术介绍
- android代码混淆之不同ADT版本和不同IDE之间混淆配置文件的区别
- Android Studio之代码混淆
- Android Studio多渠道打包和代码混淆教程
- Android Studio多渠道打包和代码混淆教程