22 | 包体积优化(上):如何减少安装包大小?

2019-02-09 张绍文
《Android 开发高手课》
课程介绍


讲述:冯永吉

时长:大小16.96M


曾经在 15 年的时候,我在 WeMobileDev 公众号就写过一篇文章《Android 安装包相关知识汇总》,也开源了一个不少同学都使用过的资源混淆工具AndResGuard。
现在再看看这篇 4 年前的文章,就像看到了 4 年前的自己,感触颇多啊。几年过去了,网上随意一搜都有大量安装包优化的文章,那还有哪些“高深”的珍藏秘笈值得分享呢?
时至今日,微信包体积也从当年的 30MB 增长到现在的 100MB 了。我们经常会想,现在 WiFi 这么普遍了,而且 5G 都要来了,包体积优化究竟还有没有意义?它对用户和应用的价值在哪里?

安装包的背景知识

还记得在 2G 时代,我们每个月只有 30MB 流量,那个时候安装包体积确实至关重要。当时我在做“搜狗输入法”的时候,我们就严格要求包体积在 5MB 以内。
几...

展开全文
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

精选留言

  • Geek_a8c19d
    2019-09-23
    Sample里的Release包dex重排优化后APK变大 redex --sign -s ReDexSample/keystore/debug.keystore -a androiddebugkey -p android -c redex-test/interdex.config -P ReDexSample/proguard-rules.pro -o redex-test/interdex_output-release.apk ReDexSample/build/outputs/apk/release/ReDexSample-release.apk

    作者回复: 重排并不是为了减少size,不过可以diff一下是哪一块变大了。会不会只是压缩率的问题

    
    2
  • nb Ack
    2019-08-02
    老师您好。我想问一下减少 apk 体积是不是可以通过配置 ndk { abiFilters 'armeabi-v7a' } 减少打出的 so 文件。听说微信就是这样的?这会有什么问题吗?

    作者回复: 在国内为了减少安装包体积,一般都是单abi的,不仅仅是微信

    共 2 条评论
    1
  • Allen
    2019-02-09
    其实更好奇怎样在启动速度快的要求下 减少包体大小 还是这两者必须择一呢

    作者回复: 类似dex分包以及某些手段,是既能减少包体积又能提升启动速度。 如果需要权衡的事情,我们要看自己的应用处于哪个阶段,目前更加严峻的是哪个问题

    
    1
  • 詹伟
    2019-09-04
    动态库压缩,动态库拷贝成功后才有戏,如果拷贝失败了怎么破,apk内直接读是不能压缩的

    作者回复: 只能删除一些缓存文件,或者提示用户清理空间了

    
    
  • 天空
    2019-06-02
    项目用了small插件化,ApkChecker不能分析以so库的插件,怎么办?

    作者回复: 可能需要适配一下才行

    
    
  • joker°
    2019-05-07
    mess 还是在维护的~

    作者回复: 抱歉抱歉

    
    
  • 小小代码
    2019-04-13
    还有个问题,Redex重分包的功能,如果我使用通过-printconfiguration "build/outputs/mapping/proguard-rules.pro"生成的合并之后的Proguard文件,会打印 InterDexPass not run because no ProGuard configuration was provided的日志,但我实际上配置了Proguard文件啊

    作者回复: 需要拼到命令行中: redex -P proguard_rule.txt -c interdex.config boot-free-debug.apk -o redex.apk

    
    
  • 小小代码
    2019-04-13
    试了下Redex重分包的功能,发现个问题,如果我使用通过-printconfiguration "build/outputs/mapping/proguard-rules.pro"生成的合并之后的Proguard文件,会打印 InterDexPass not run because no ProGuard configuration was provided的日志,但我实际上配置了Proguard文件啊

    作者回复: 可以拼在命令行中: redex -P proguard_rule.txt -c interdex.config boot-free-debug.apk -o redex-uc.apk

    
    
  • elephant
    2019-03-05
    F家的方案总是让人不可思议,经常想大喊,你们至于么,方案搞得这么黑科技!!!以前看fresco和reactnative实现,请问我跪的标准么。😂

    作者回复: 对的,不过感觉他们玩的太飘了,可以参考但是不好全盘接受

    
    
  • CoderAndy
    2019-02-13
    Facebook把dex放在assets下那么在首次启动解压后,如何执行dexopt?或者会不会执行该操作?

    作者回复: 不执行dexopt,直接通过oatmeal自己生成odex

    共 2 条评论
    