博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.2、Android Studio压缩你的代码和资源
阅读量:7107 次
发布时间:2019-06-28

本文共 1208 字,大约阅读时间需要 4 分钟。

为了让你的APK文件尽可能的小,你需要在构建的时候开启压缩来移除无用的代码和资源。

代码压缩可在ProGuard中使用,可以检测和清除无用的类,变量,方法和属性,甚至包括你引用的库。ProGuard同样可以优化字节码,移除无用的代码,并且模糊剩下的类,变量和方法。代码模糊可以让增加APK逆向工程的成本。

资源压缩可在Andorid的Gradle插件中使用,可以清除你打包的APP中无用的资源,包含你引用的库中的无用的资源。

压缩你的代码

为了启用ProGuard的代码压缩,需要在build.gradle中添加minifyEnabled true。

需要注意的是,代码压缩会拖慢构建速度,所以,如果可能的话,尽量避免在debug构建是使用。

如下:

android {    buildTypes {        release {            minifyEnabled true            proguardFiles getDefaultProguardFile(‘proguard-android.txt'),                    'proguard-rules.pro'        }    }    ...}

注意:Android Studio在使用Instant Run时会禁用ProGuard。

自定义哪些代码需要保留

在很多情况下,ProGuard很难正确的去分析,它可能会清除你的app需要的代码。
1、 当你的app从AndroidManifest.xml中引用一个类时
2、 当你的app调用一个JNI方法
3、 当你的app使用反射来控制代码

为了避免这个问题,需要使用-keep,如下:

-keep public class MyClass

同样,可以添加@Keep注解来实现。

压缩你的资源

资源压缩需要跟代码压缩一起才能正常使用。在代码压缩出去所有的无用的代码之后,才能辨别哪些资源仍然未被使用。如下:

android {    ...    buildTypes {        release {            shrinkResources true            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'),                    'proguard-rules.pro'        }    }}

自定义哪些资源需要保留

如果这里有些特别的资源你需要保留或丢弃,在你的项目中创建一个包含标签的XML文件,用tools:keep指明需要保留的资源,用tools:discard指明需要丢弃的文件。
比如:

本文作者:宋志辉

个人微博:

转载地址:http://ljthl.baihongyu.com/

你可能感兴趣的文章
大型企业网络配置系列课程详解(一)---OSPF单区域配置与相关概念的理解
查看>>
Exported activity does not require permission
查看>>
StackOverflow发布年度开发者调查报告:JavaScript备受欢迎
查看>>
自平衡二叉查找树
查看>>
shell脚本中的数据传递方式
查看>>
Shiro系列(0) - 权限管理在J2EE企业级开发中的应用与实战
查看>>
Gdevops峰会归来
查看>>
[20170215]ORA-00088与DG Gap监测与解决4
查看>>
根据输入的日期,控制台打印格式化日历
查看>>
前端性能影响思维导图
查看>>
过滤器控制用户登录
查看>>
MVC3 Razor视图引擎的基础语法
查看>>
CCan's sign in to Appstore - This action could not be completed
查看>>
Linux下安装JDK及其配置环境变量
查看>>
6、Eternal框架-渲染者
查看>>
麻省:第17.18课
查看>>
maven项目打包时去除dependency-reduced-pom.xml文件
查看>>
Win10下Eclipse插件EasyShell兼容问题处理
查看>>
backbone总结
查看>>
C Primer Plus 第4章 字符串和格式化输入输出--4.1前导程序
查看>>