利用 Android Gradle 瘦身 apk

2014-11-11 17:09:56 +08:00
 seathink

http://devyang.me/blog/2014/11/11/li-yong-android-gradleshou-shen-apk/

apk瘦身一般有两条线,

  1. 去除无用的代码,例如引用一个比较大的lib,只使用了其中很少的功能。其他无用的代码可以想办法去掉
  2. 去除无用的资源文件,可能是第三方lib中的,也有可能是开发中引入了无用的资源

去除无用代码

当然是Proguard了!

gradle plug 0.14.0, runProguard 更名为minifyEnabled

去除无用资源

Android Gradle plug从0.14.0开始,支持自动去除没有使用的资源。

不过,这个开关是默认关闭的。可以在build type使用 shrinkResources true 开启。 要注意,这个功能的使用依赖于code shrinking, 所以minifyEnabled也必须打开。

  1. Support for automatic removal of unused resources

  2. Off by default for now, enable by setting shrinkResources to true in your release build types. Requires minifyEnabled as well.

具体配置如下

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
        }
    }
}

效果

以我正在开发的一个app为例

效果明显!

21408 次点击
所在节点    Android
8 条回复
fookwood
2014-11-11 17:19:34 +08:00
runProguard和minifyEnabled应该不是同一种东西把?

倒是挺有用的,昨天编译一个项目从2M到0.9M
xudshen
2014-11-11 17:23:28 +08:00
感谢分享
seathink
2014-11-11 17:25:29 +08:00
@fookwood
是一样的,看官网介绍
http://tools.android.com/tech-docs/new-build-system

Renamed a few properties to make things more consistent.

BuildType.runProguard -> minifyEnabled
jamesxu
2014-11-11 17:56:32 +08:00
2.02 -> 1.90,降了不到 5%,不算明显吧!
seathink
2014-11-11 18:07:59 +08:00
@jamesxu 仅仅是去除“无用”的东西而已。如果没有用到第三方lib,加上开发习惯好,就没必要是使用这个了
jinyang656
2014-11-11 18:16:13 +08:00
用到第三方库,基本都是利用反射来获取资源,一精简就各种报错,
kaedea
2015-08-31 14:14:34 +08:00
minifyEnabled 目前已只是做了 proguard 而已
seathink
2015-08-31 15:50:23 +08:00
@kaedea 嗯,的确是

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/145676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX