V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seathink
V2EX  ›  Android

利用 Android Gradle 瘦身 apk

  •  
  •   seathink · 2014-11-11 17:09:56 +08:00 · 25251 次点击
    这是一个创建于 3665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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为例

    • 使用前2.02MB

    • 使用后1.90MB

    效果明显!

    8 条回复    2015-08-31 15:50:23 +08:00
    fookwood
        1
    fookwood  
       2014-11-11 17:19:34 +08:00
    runProguard和minifyEnabled应该不是同一种东西把?

    倒是挺有用的,昨天编译一个项目从2M到0.9M
    xudshen
        2
    xudshen  
       2014-11-11 17:23:28 +08:00
    感谢分享
    seathink
        3
    seathink  
    OP
       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
        4
    jamesxu  
       2014-11-11 17:56:32 +08:00
    2.02 -> 1.90,降了不到 5%,不算明显吧!
    seathink
        5
    seathink  
    OP
       2014-11-11 18:07:59 +08:00
    @jamesxu 仅仅是去除“无用”的东西而已。如果没有用到第三方lib,加上开发习惯好,就没必要是使用这个了
    jinyang656
        6
    jinyang656  
       2014-11-11 18:16:13 +08:00
    用到第三方库,基本都是利用反射来获取资源,一精简就各种报错,
    kaedea
        7
    kaedea  
       2015-08-31 14:14:34 +08:00
    minifyEnabled 目前已只是做了 proguard 而已
    seathink
        8
    seathink  
    OP
       2015-08-31 15:50:23 +08:00
    @kaedea 嗯,的确是
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2392 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.