程序员人生 网站导航

4.2、Android Studio压缩你的代码和资源

栏目:综合技术时间:2016-08-09 08:12:07

为了让你的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中援用1个类时
2、 当你的app调用1个JNI方法
3、 当你的app使用反射来控制代码

为了不这个问题,需要使用-keep,以下:
-keep public class MyClass

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

紧缩你的资源
资源紧缩需要跟代码紧缩1起才能正常使用。在代码紧缩出去所有的无用的代码以后,才能辨别哪些资源依然未被使用。以下:

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

自定义哪些资源需要保存
如果这里有些特别的资源你需要保存或抛弃,在你的项目中创建1个包括标签的XML文件,用tools:keep指明需要保存的资源,用tools:discard指明需要抛弃的文件。
比如:

<?xml version=1.0" encoding="utf⑻"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*" tools:discard="@layout/unused2" />

本文作者:宋志辉
个人微博:点击进入

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐