Android代码混淆:

混淆就是将类中的变量名,方法名,类名修改为ABC之类无意义的名称,增加反编译时的阅读难度。
首先在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-v4jar类库,

-keeppublicclass*extendsandroid.support.v4.*

-keeppublicclass*extendsandroid.app.Fragment

#gson有关的代码不能进行混淆不然会报错:比如实体类等等

-keepclasscom.test.**{*;}

-keepattributesSignature

版权声明:本文为博主原创文章,未经博主允许不得转载。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)代码中对不同国家支持的信道的设置
  3. Android系统横竖屏切换时候Activity的生命周期
  4. android练习之定制toast消息位置
  5. 动态Android编程
  6. Android(安卓)Studio - 快捷键详解-MAC版
  7. android中获取当前Activity的实例和名字
  8. android 复制 粘贴 剪切功能应用
  9. 技术|Android安装包极限优化

随机推荐

  1. Android(安卓)POI操作office文档
  2. Android(安卓)ListView实现快速定位联系
  3. 基于 Feign 实现强类型接口
  4. Android调用摄像头拍照(兼容7.0)
  5. 用android build system 编译一个最小的a
  6. Android学习整理-2-TabLayout的学习
  7. android 设置Spinner文字标题颜色 字体大
  8. 解决移动端Web安卓机点击输入框,输入法遮
  9. Android(安卓)Studio插件
  10. Android——Activity之间传递 实体类(Bea