android混淆
Android代码混淆:
混淆就是将类中的变量名,方法名,类名修改为A、B、C之类无意义的名称,增加反编译时的阅读难度。
首先在project.properties中将
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
前面的#取消,然后在在proguard-project.txt中编写混淆方式。
-optimizationpasses5
-dontusemixedcaseclassnames【混淆时不会产生形形色色的类名】
-dontskipnonpubliclibraryclasses【指定不去忽略非公共的库类。】
-dontpreverify【不预校验】
-verbose
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*【优化】
#保留行号,这样显示错误时就不会显示Unknown Source
-keepattributes SourceFile,LineNumberTable
-keeppublicclass*extendsandroid.app.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>;
}
-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{
publicstaticfinalandroid.os.Parcelable$Creator*;
}
这些是基本的混淆,对android四大组件不进行混淆,枚举不进行混淆。
如果项目中有其他第三方JAR包,必须进行特殊处理。
首先第三方包大部分都有进行混淆,如果进行二次混淆调用时就会出错。
第三方JAR包不混淆的操作如下:
首先#所有的jar包
-libraryjarslibs/alipay_msp.jar保持不混淆的JAR包
-dontwarncom.alipay.android.app.**忽略所有的jar包错误
-keepclasscom.alipay.android.app.**{*;}不混淆jar包类
默认的操作就是上面的三步,但是对于某些项目的包,还要具体问题具体分析
#Android-support-v4的jar类库,
-keeppublicclass*extendsandroid.support.v4.*
-keeppublicclass*extendsandroid.app.Fragment
#和gson有关的代码不能进行混淆不然会报错:比如实体类等等
-keepclasscom.test.**{*;}
-keepattributesSignature
版权声明:本文为博主原创文章,未经博主允许不得转载。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android(安卓)代码中对不同国家支持的信道的设置
- Android系统横竖屏切换时候Activity的生命周期
- android练习之定制toast消息位置
- 动态Android编程
- Android(安卓)Studio - 快捷键详解-MAC版
- android中获取当前Activity的实例和名字
- android 复制 粘贴 剪切功能应用
- 技术|Android安装包极限优化