文档章节

android studio中,app的混淆打包

蜗牛搬家
 蜗牛搬家
发布于 2016/01/25 19:03
字数 441
阅读 32
收藏 0

在android开发中,在app的发布,app的混淆打包是很必要的,app的混淆打包,可以降低别人对app的解压时代码的可读性,增加阅读代码的难度。

首先,在你的工程中找到proguard-rules.pro文件

在该文件中添加混淆的算法代码:

-optimizationpasses 5          # 指定代码的压缩级别
-dontusemixedcaseclassnames   # 是否使用大小写混合
-dontpreverify           # 混淆时是否做预校验
-verbose                # 混淆时是否记录日志

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆时所采用的算法

-keepattributes Annotation

-keep public class * extends android.app.Fragment     # 保持哪些类不被混淆
-keep public class * extends android.support.v4.app.Fragment   # 保持哪些类不被混淆
-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 <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 *;
}
-dontwarn okhttp3.**  #忽略警告
-keep class okhttp3.** { *;}  # 保持引入的libs文件下的jar不会被混淆

添加完之后,进行签名打包就可以了。












































































© 著作权归作者所有

蜗牛搬家
粉丝 5
博文 24
码字总数 9089
作品 0
广州
Android工程师
私信 提问
Android studio 使用心得(五)---代码混淆和破解apk

版权声明:本文出自veidy的博客,转载必须注明出处 转载请注明出处:http://my.oschina.net/aibenben/blog/371889 这篇文章等是跟大家分享一在Android studio 进行代码混淆配置。之前大家在e...

veidy
2015/01/26
0
4
Android(React Native)打包apk

RN在打包前要生成bundle文件,否则打开app闪退 打开终端,进去项目打开服务:react-native start 进入项目android/app/src/main/目录下新建一个assets文件夹 再打开一个新的终端进入项目根目录...

Chason-洪
2017/10/30
0
0
SimpleNews 项目的重构之旅(4) -Gradle for Android 基础知识汇总

Gradle 使用 Android Studio 都知道 Gradle,在 SimpleNews 项目中,前期的时候并不是很了解 Gradle 语法等,只是使用 Android Studio 默认的配置来构建,后续也只是关注在功能方向,没有过多...

無名小子的杂货铺
2017/06/03
0
0
android studio 项目结构解析

1、android系统架构 android的系统结构一共可以分为四个,分别为:Linux内核层、系统运行库层、应用框架层和应用层 1.1 Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的底...

西米小娅
2018/09/12
0
0
基于Android studio动态调试smali全过程

1 工具和环境 Android studio 用于集成idea插件和导入smali源码 idea插件 插件下载 或者在studio中搜索Smalidea进行插件下载(要翻墙) 在Android studio中通过idea插件来调试smali和在idea中...

gavinme
2018/07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
10分钟前
0
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
17分钟前
2
0
聊聊Elasticsearch的OsProbe

序 本文主要研究一下Elasticsearch的OsProbe OsProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/os/OsProbe.java public class OsProbe { private static f......

go4it
18分钟前
0
0
谈谈lucene的DocValues特性之NumericDocValuesField

在默认实现的DocValuesCosumer中,数值有可能分块存储也有可能放在一个数据块中存储。 分块的大小默认是16384,并且通过预先计算如果按一个块存储最大值与最小值的差所占用的比特数和分块存储...

FAT_mt
36分钟前
0
0
【BATJ】面试必问MySQL索引实现原理

BATJ面试题剖析 1、为什么需要使用索引? 2、数据结构Hash、平衡二叉树、B树、B+树区别? 3、机械硬盘、固态硬盘区别? 4、Myisam与Innodb B+树的区别? 5、MySQL中的索引什么数据结构? 6、...

须臾之余
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部