您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页有效减少 Android 应用的方法数

有效减少 Android 应用的方法数

来源:二三娱乐

简评:65k 限制确实是个令人不爽的事情,这里就让你知道是哪些库用了大量的方法,并该

现在的应用越来越大,方法数经常达到 65k 限制。这里就介绍下如何可视化 library 方法数和减少方法数的方法。

可视化方法数

buildscript {
    repositories {
        mavenCentral() // or jcenter()
    }

    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.4'
    }
}

// make sure this line comes *after* you apply the Android plugin
apply plugin: 'com.getkeepsafe.dexcount'

在项目中运行 ./gradlew assembleDebug 就会在 console 中输出:


并会在 build/outputs/dexcount/debugChart 中生成一个可交互的图形报告:


减少方法数

在我们选用 library 之前,有必要考虑其方法数,原因有二:

  1. 更换现有程序中已使用的库非常有挑战性,所以最好之前就想好。
  2. 很多人引入了一个很大的 library,但只是为了做很简单的事(Strings.isNullOrEmpty()),通常你都用不到 library 的所有方法。

对于一个功能,通常都会有好几个库能完成这一个功能。这里以图片加载为例:



这些库都有各自的优缺点,所以清楚了解自己的需求,并选择库很有必要。

那对于已经使用的库,有没有办法来减少方法数呢?

我们可以用 Proguard 来剔除库中未使用的部分。这里我们用 Guava 来举例,首先我们需要知道项目实际用到了哪些部分,在 src 文件夹下运行下面的命令:

grep -roh . -e  | sort | uniq

之后,创建一个 Proguard 配置:

-dontoptimize
-dontobfuscate

-keep public class  {
    public *;
}

-keep public class  {
    public *;
}

-keep public class  {
    public *;
}

-keep public class  {
    public *;
}
...

执行一个 Gradle 脚本,就可以生成一个缩小版的库,再将其复制到项目的 libs 文件夹中进行使用。

延伸阅读

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务