实战之减小APK

公司的需求越来越多,app功能越来越炫,apk瘦身也就势在必行。参考他人的经验,经过实践之后,发现以下的方法还是很有效果的~

一、瘦身assets文件

查看该文件夹有没有被丢弃不用的文件

二、瘦身res资源

1、瘦身drawable资源
①对于ldpi,系统会自动的将hdpi的图片缩放到达到目的,所以不需要
②xxxhdpi,针对2k屏幕的,目前还没有普及开,考虑下是否需要
③引入的第三方包中可能也引用了资源图片,但是其中的某些我们可能是不想要的,剔除他们,可以配置build.gradle。defaultConfig提供了resConfig这个flavor来指定打包出只打包某些资源,比如字串、图片等等
defaultConfig {
    // ...

    resConfigs "en", "de", "fr", "it"
    resConfigs "hdpi", "xhdpi", "xxhdpi"
}
④图片压缩,可以使用pngquant工具,使用很方便,支持.9png。网址:https://pngquant.org/
打开网页,下拉会看到Download–>Command-line 然后根据操作系统下载版本,例如 Binary for Windows (v2.5.2)。下载下来之后解压,进入到pngquant目录下,把需要压缩的图片文件夹如drawable-xxhdpi,copy到该目录下。然后进入控制台命令进入该目录下执行.\pngquant 256 –force –ext .png .\drawable-xxhdpi*.png。OK结束了。可以对比文件夹操作前后的大小了。效果还是很明显的。
解释下其中几个参数:
–ext .png 这个是因为默认它会将解压缩后的Png文件重命名加后缀,这个参数即将重命名后加了一个空的字符的后缀,即等于不重命名了
–force 不重命名后等于要覆盖原来的文件了,这里即强制覆盖原来的文件
⑤ 巧用代码代替图片。如自定义带圆角的button图片等等
2、瘦身layout资源
将布局中重复使用的控件的样式能提取的提取出来共用,不仅减少代码量还利于维护。例如提取布局的公共标题栏,控件中相同的属性配置等等

三、瘦身 lib资源

so文件的瘦身
so文件体积大,不加控制,都会打包到的apk,精简过程可以删掉x86和x86_64的so,他们只是用来支持虚拟机的,可以通过配置gradle来制定只打包某些so
defaultConfig {

        ... ...

        ndk {
            //设置支持的SO库架构
            abiFilters 'arm64-v8a', 'armeabi' //, 'x86', , 'x86_64', 'arm64-v8a'
        }
    }

四、 瘦身代码

根据Android Lint(AndroidStudio),Problems(Eclipse)的提示,把未使用的代码手动删除掉。

五、重新打包Jar包

引入大量的第三方开发库并不一定全要的。如果在build.gradle里面加一句:
dependencies {
    compile '***'
}
这要把他们的库全给引用过来了。想到他们是开源的,代码有,所以我们仅仅把他们的我们所用到的代码给剥离出来,单独打包了一个jar包引入到我们的项目里面,就OK了,减少了大量的无用依赖代码!

六、 使用Progruard

Proguard是Android很早就使用的代码混淆工具,除了用于混淆代码提高安全性以外,他在代码编译的时候也会通过遍历代码的方式来发现没有被调用的代码,从而将其在打包成apk时剔除,最终一定程度上降低了apk的大小。但是Proguard使用时候是要注意的,因为代码中利用反射机制的地方会被Proguard工具破坏,所以要慎重的编写混淆例外文件,同时对于混淆后打包出来的apk要重新充分回归测试下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值