为什么要启动ProGuard(所有试验都在AS 环境)

代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性, 包括自带代码库中的未使用项(这使其成为以变通方式解决 64k 引用限制的有用工具)。ProGuard 还可优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码 可令您的 APK 难以被逆向工程,这在应用使用许可验证等安全敏感性功能时特别有用。

简而言之:Proguard 能混淆代码,能减少Apk 的体积,优化

启用压缩代码步骤[1]

首先,你应该在项目的Gradle 中 做如下的定义

android {

buildTypes {

release {

minifyEnabled true

zipAlignEnabled true // Zipalign优化

shrinkResources true // 移除无用的resource文件,必须和minifyEnabled 一起使用

proguardFiles getDefaultProguardFile(‘proguard-android.txt'),

'proguard-rules.pro'

}

}

...

}

请注意,代码压缩会拖慢构建速度,因此您应该尽可能避免在调试构建中使用。不过,重要的是您一定要为 用于测试的最终 APK 启用代码压缩,因为如果您不能充分地自定义要保留的代码,可能会引入错误 注:Android Studio 会在使用 Instant Run 时停用 ProGuard。

启用压缩代码步骤[2]

在gradle 文件中定义好release 后我们会发现有这么一行代码

proguardFiles getDefaultProguardFile(‘proguard-android.txt'),'proguard-rules.pro'

proguard-rules.pro 是你项目中的混淆配置文件,你可以根据你的项目配置你的混淆规则,当然 这是可以模板化的,配置实例请查看这里 模板

proguard-android.txt 是开发环境默认的配置,你可以查看里面的内容,你也可以使用 proguard-android-optimize.txt; 我建议使用proguard-android-optimize.txt,更加严格的混淆优化,风险就是可能会出错导致某些手机不能运行!两者的区别 请点击这里

#简单的模板 我建议gradle 中配置proguard-android-optimize.txt。风险?风险无处不在呀,来吧.

简单的模板参考如下:点击查看简单的混淆模板,有实际Demo可以练习哦

特别说明

使用 proguard-android-optimize 后要添加以下配置,否则使用Retrofit 2(Base on OKHTTP)进行Http请求的

时候方法内部无法传参,你可以去掉试试看

-keepclasseswithmembers class * {

@retrofit2.http.* ;

}

#proguard-android-optimize.txt 与 proguard-android.txt的区别 区别简单的说就是proguard-android-optimize.txt开启了优化(没有配置 -dontoptimize)并且 配置了optimizations过滤算法:

这两个文件可以在开发环境目录下找到,可以自己看看

------------------------proguard-android.txt---------------------------------

# 这个不需要翻译了吧,简单的就是配置了dontoptimize(不要开启优化)

# Optimization is turned off by default. Dex does not like code run

# through the ProGuard optimize and preverify steps (and performs some

# of these optimizations on its own).

# 不要开启优化 do not optimize

-dontoptimize

# 不要开启预校验,移动端都不需要开启,do not preverify

-dontpreverify

# Note that if you want to enable optimization, you cannot just

# include optimization flags in your own project configuration file;

# instead you will need to point to the

# "proguard-android-optimize.txt" file instead of this one from your

# project.properties file.

------------------------proguard-android-optimize.txt---------------------------

# Optimizations: If you don't want to optimize, use the

# proguard-android.txt configuration file instead of this one, which

# turns off the optimization flags. Adding optimization introduces

# certain risks, since for example not all optimizations performed by

# ProGuard works on all versions of Dalvik. The following flags turn

# off various optimizations known to have issues, but the list may not

# be complete or up to date. (The "arithmetic" optimization can be

# used if you are only targeting Android 2.0 or later.) Make sure you

# test thoroughly if you go this route.

#翻译:如果你不需要优化,你就使用proguard-android.txt 配置吧(已经配置关闭了优化)

#警告:添加优化会带来一定的风险,并非所有ProGuard执行的优化都适用于所有版本的Dalvik。

#下面的配置经过一序列的实践可以显著降低风险,但是并非万能,所以请进行详细的测试吧

#不然使用的时候出问题了不要怪我。(呵呵我们适配的最小API 是15呢)

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*

-optimizationpasses 5

-allowaccessmodification

-dontpreverify

android 万能混淆文件,Android ProGuard 代码压缩混淆与打包优化相关推荐

  1. 使用UglifyJS实现将js代码压缩混淆

    使用UglifyJS进行js代码压缩混淆(混淆后的代码的可读性是较高的,这里主要是压缩体积) 安装:全局:npm install uglify-js -g 局部:npm install uglify- ...

  2. js代码压缩混淆uglify

    -c压缩,-m混淆命名,-b格式化输出js文件(否则为只有一行),-o目标输出文件. 压缩一个文件: uglifyjs main.js -o publish/main.js -c -m -b 压缩多个 ...

  3. android创建图片资源文件,Android图片添加水印图片并把图片保存到文件存储的实现代码...

    具体代码如下所示: package zhangphil.test; import android.graphics.Bitmap; import android.graphics.BitmapFact ...

  4. android 生成aar文件,Android 中.aar文件生成方法与用法

    https://i.cnblogs.com/EditPosts.aspx?opt=1 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Ja ...

  5. android 建立工程文件,Android 项目开发必备-建立属于你的build.gradle文件

    timg (1).jpg 开发一个Android项目不仅仅需要你会写java/kotlin代码,而且你还要了解各种配置文件.例如.AndroidManifest.xml,混淆文件,build.grad ...

  6. android编译.a文件,Android 7.1源码编译导入AS完整教程

    本教程仅针对Android 7.1系统,为便于虚拟机备份和出现问题时的还原,本教程分为3步:初始化编译环境.源码同步.编译源码导入Android Studio. 编译源码:Android7.1.2_r ...

  7. android 颜色资源文件,android中colors.xml颜色设置资源文件的方法

    1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 #008577 #00574B #D81B60 #ff0000 #0000ff 2. 在res目录下的la ...

  8. android添加动画文件,Android开发之图形图像与动画(五)LayoutAnimationController详解

    首先需要先介绍下LayoutAnimationController: * 1.LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup * 里面 ...

  9. android第三方打开文件,Android第三方文件选择器aFileChooser使用方法详解

    aFileChooser是android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.com/iPaulPro/aFileChooser aFileCho ...

最新文章

  1. python 命令-Python中执行系统命令的四种方法
  2. JavaScript 如果拥有多线程能力会怎样?
  3. 钱穆的中学读书事(作者王国华)
  4. HDFS的API操作-获取文件列表信息
  5. 美股本周第二次熔断:道指大跌近10% 费城半导体指数大跌11%
  6. 新加入一个团队,我们应该怎么做?
  7. 【学习笔记】一:JavaScript简介
  8. https阿里云证书购买与apache环境配置
  9. Vcpkg 的安装与使用
  10. oracle中ipad是什么意思,oracle 函数 Ipad的简单用法
  11. 信号的频谱分析,加噪降噪处理
  12. python人脸考勤系统_python人脸考勤系统Python3多进程 multiprocessing 模块实例详解
  13. 微生活时光机:去项目中挖掘JS模块化简史
  14. 苹果8参数_iPhone11 iPhone11Pro哪里买最便宜靠谱划算 2020双十一苹果手机购机攻略...
  15. 2020奶茶行业研究报告
  16. SSH连接git服务器学习笔记
  17. idea java 语法高亮_Intellij IDEA 中JAVA常用配置项总结
  18. leetcode-种花问题
  19. :nth-child选择器
  20. US Credit repay

热门文章

  1. ListView的BeginUpdate()和EndUpdate()作用
  2. 周董新专辑跨时代 flac版下载地址~
  3. 慕的2021阅读数据分析报告
  4. 互联网信息服务ICP许可证分类是什么?
  5. sql---多表联查
  6. 逼死程序员的翟欣欣方首度发声了,居然这样说,你信不?
  7. 网页漂浮物代码_无代码VS低代码。 有什么不同? 它。 不。 物。
  8. window.open 新开窗口设置title问题
  9. 大专程序员面试了25家公司,总结出来的痛苦经验!
  10. Springboot----项目整合微信支付(处理微信支付回调通知)