android APP进行混淆
来源:互联网 发布:禅道 专业版 源码 编辑:程序博客网 时间:2024/05/29 17:00
昨天第一次在AS做混淆,步骤都是百度出来的。今天记录下。。。
第一步:
在model app里以下这地方改为:
android { compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { applicationId "c**********" minSdkVersion 18 targetSdkVersion 22 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' }}以上改为:第三步:android { compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { applicationId "c********" minSdkVersion 18 targetSdkVersion 22 } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}以上至所以加入debug也混淆,是为了自己混淆后进行调试,这样就可以debug的时候查看log,可以直接看到哪些地方混淆出现错误,以便
快速处理。
第二步:
找到文件,配置混淆。proguard-rules.pro'
此文件位置如下图,若地方没有,可以在其它项目复制一份过来放在此地方,然后进行配置混淆就好了
配置混淆
附上自己成功混淆的配置
-optimizationpasses 5 # 指定代码的压缩级别-dontusemixedcaseclassnames # 是否使用大小写混合-dontpreverify # 混淆时是否做预校验-verbose # 混淆时是否记录日志#---------------------------------实体类(此为自己包名,做了打*处理)----------------------------------keep class com.********.bean.** { *; } #------alipay-------#alipay-keep class com.alipay.android.app.IAlixPay{*;}-keep class com.alipay.android.app.IAlixPay$Stub{*;}-keep class com.alipay.android.app.IRemoteServiceCallback{*;}-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}-keep class com.alipay.sdk.app.PayTask{ public *;}-keep class com.alipay.sdk.app.AuthTask{ public *;}-keep class com.alipay.mobilesecuritysdk.*-keep class com.ut.*-dontwarn android.net.**-keep class android.net.** { *; }#------GSON不混淆-------#-keep attributes Signature-keep class com.google.gson.stream.** { *; }-keep class com.google.gson.examples.android.model.** { *; }-keep class com.handmark.pulltorefresh{*;}-keep class com.lidroid.** { *; }#------eventbus不混淆--------keepattributes *Annotation*-keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>;}-keep enum org.greenrobot.eventbus.ThreadMode { *; }# Only required if you use AsyncExecutor-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { <init>(Java.lang.Throwable);}#------友盟分享部分------- -dontwarn com.umeng.** -keep class com.umeng.**{*;} -keep class u.aly.**{*;} -keep class com.google.**{*;} #weixin -dontwarn com.tencent.mm.** -keep class com.tencent.mm.**{*;} #Universal Image Loader -keep class com.nostra13.universalimageloader.** { *; } -keepattributes Signature################xutils3##################-keep class org.xutils.** { *; }-keep public class * extends org.xutils.**-keepattributes Signature-keepattributes *Annotation*-keep public interface org.xutils.** {*;}-dontwarn org.xutils.**-keepclasseswithmembers class com.jph.android.entity.** { <fields>; <methods>;}-ignorewarnings-keep public class * extends android.support.** #如果有引用v4或者v7包,需添加 #---------------------------------默认保留区--------------------------------- -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 * extends android.view.View -keep public class com.android.vending.licensing.ILicensingService -keep class android.support.** {*;} -keep public class * extends android.os.IInterface -keep public class * extends android.view.View{ *** get*(); void set*(***); public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); } -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(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <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 * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } #---------------------------------------------------------------------------- #---------------------------------webview------------------------------------ -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.webView, jav.lang.String);
0 1
- android APP进行混淆
- android对app进行代码混淆
- Android APP代码混淆
- Android源码混淆编译app
- Android app的混淆打包
- android app 打包混淆模板
- Android基础--App代码混淆
- Android Studio APP混淆实践
- android 如何进行 代码混淆
- android studio中进行混淆
- Android Studio android APP混淆打包
- android app proguard混淆配置与常见问题
- Android反编译已经混淆的app
- Android App代码混淆终极解决方案
- Android APP代码混淆proguard和加固
- Android APP代码混淆proguard和加固
- Android App 反编译与代码混淆
- Android应用打包发布之app混淆
- android 上的API函数钩子,利用CydiaHook实现
- spring security 初次涉猎三
- 限制对话框的移动范围
- Value '0000-00-00' can not be represented as java.sql.Date解决办法
- transformClassesWithDexFor2011Debug "\bin\java.exe'' finished with non-zero exit value
- android APP进行混淆
- Android开发:shape和selector和layer-list的(详细说明)
- 读书笔记六
- 视频编码器:编译libx264
- 二进制的使用<bitset>
- Android记事本app
- html <iframe>自适应高度
- oracle11G listener.log位置
- 1-5 核心初始化