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

为了让你的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指明需要丢弃的文件。

比如:

tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"

tools:discard="@layout/unused2" />

本文作者:宋志辉

个人微博:点击进入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值