zoukankan      html  css  js  c++  java
  • 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指明需要丢弃的文件。
    比如:

    <?xml version=1.0" encoding="utf-8"?>
    <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" />

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

  • 相关阅读:
    白盒测试方法
    单元测试 集成测试 系统测试
    快慢指针原理和应用
    实例方法,类方法,静态方法区别
    查找算法
    排序算法整理
    Oracle sql developer 删表时遇到问题unique/primary keys in table referenced by foreign keys
    剑指 Offer 18. 删除链表的节点(简单)
    剑指 Offer 17. 打印从1到最大的n位数(简单)
    Cyberdebut的补题列表
  • 原文地址:https://www.cnblogs.com/hainange/p/6153430.html
Copyright © 2011-2022 走看看