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

本文共 1260 字,大约阅读时间需要 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指明需要丢弃的文件。
比如:

本文作者:宋志辉

个人微博:

转载于:https://www.cnblogs.com/hainange/p/6153430.html

你可能感兴趣的文章
Go 文件操作(创建、打开、读、写)
查看>>
JS获取周、月、季度日期
查看>>
python 异步采集,网页爬虫编写 | 一步一步学python
查看>>
Flash调用XML文件的方法
查看>>
Android ArrayAdapter 详解
查看>>
【iOS开发笔记26/50】我自己写的苹果应用程序XQViewer终于上架了,解决了一系列的问题,终于挺过来了...
查看>>
JSF---->其他标签
查看>>
Python应用01 原始Python服务器
查看>>
Add Console Application Program to the MFC Program
查看>>
Oracle中可被并行化执行的SQL操作
查看>>
新的Layout布局系统
查看>>
java链表
查看>>
VC获取操作系统版本和名称
查看>>
iOS: 消息通信中的Notification&KVO
查看>>
FZU Problem 2105 Digits Count
查看>>
禁止复制
查看>>
Accessing Hardware in Silverlight using COM
查看>>
工具箱 - Xshell <2>
查看>>
使用bootstrap和metroui设计的微网站或手机app界面
查看>>
使用GLSL实现更多数量的局部光照 【转】
查看>>