博客
关于我
android开发笔记之APK大小优化
阅读量:128 次
发布时间:2019-02-26

本文共 957 字,大约阅读时间需要 3 分钟。

蛋痛引发的争论

晚上无聊的蛋痛,打开手机查看所有应用软件的信息时,突然发现一个APK文件,大小高达63M。与手机中其他191个APK应用对比,超过60M的只有这一个应用和谷歌的Chrome应用。其他应用大部分不超过10M,这在一部入门级手机上显然不合常理,值得进一步优化。

不愉快的争论

将问题反馈给SPM后,定位到这是一款公司自开发的回忆相册应用。SPM要求立即删除该应用,但商务和开发部门不同意。于是,在群里开始了一场公司里的扯蛋秀。

我在群里发表了自己的观点:“这个APK问题的关键还是优化APK大小,60多M肯定是太大了。”这一发言立刻引发了争议。一位高人回复:“里面都是第三方提供的素材,怎么优化,搞笑吧?”

我不甘示弱,立刻百度寻找APK大小优化的方法,并截图搜索结果发送给大家。高人迅速回复:“里面都是必须的素材,删除就不能正常使用,怎么优化?APK大小优化不是只有你知道。”

在此后,我屏蔽了这位高人的信息,表示对这种态度和能力的无奈和无语。优化APK的大小方法有很多,为什么一定要删除必须的素材呢?

抛出的砖头

经过反馈和争论,我决定自己定位到这款应用并解压APK,深入研究优化方法。经过分析,优化的核心在于优化占用空间的资源。

核心优化方向

  • 库文件优化

    查看APK的库文件发现,包含两个目录:arm64-v8a和armeabi-v7a。arm64-v8a下的库文件有6M,armeabi-v7a下的库文件有5M。由于项目是32位的,只需要针对对应的平台发布即可,删除不需要的平台库文件可节省6M的APK大小。

  • 图片资源优化

    在res目录下发现了多套分辨率的图片资源(如hdpi、mdpi、xhdpi、xxhdpi),这几套分辨率的图片都被包含在APK中,占用了大量空间。根据网上的优化方法,建议只针对需要的分辨率生成对应的资源文件,从而大幅减少APK的大小。

  • 谷歌的优化启示

    参考谷歌GMS包中的Duo应用的构建方法,可以总结为以下几点:

    • 根据不同的分辨率和平台分别提供对应的APK应用,尽量减少不需要的占用空间资源。

    通过这种方式,谷歌的APK优化方法简洁而高效,能够将APK的大小大幅降低。

    参考资源

  • Android APK大小优化之自我实践
  • Android产品研发(四)–>减小APK大小
  • 转载地址:http://mfuf.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL on Linux 最佳部署手册
    查看>>
    PostgreSQL Oracle 兼容性之 - pipelined
    查看>>
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>
    PostgreSQL 分组聚合查询中 filter 子句替换 case when
    查看>>
    PostgreSQL 同步流复制锁瓶颈分析
    查看>>
    PostgreSQL 备份与还原命令 pg_dump
    查看>>
    Postgresql 外部表插件postgres_fdw的安装和使用
    查看>>
    PostgreSQL 如何从崩溃状态恢复(上)
    查看>>
    PostgreSQL 存储过程基本语法
    查看>>
    PostgreSQL 实现批量更新、删除、插入
    查看>>
    PostgreSQL 导入 .gz 备份文件
    查看>>
    PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)
    查看>>
    PostgreSQL 新增数据返回自增ID
    查看>>
    postgresql 更新多列数据
    查看>>
    PostgreSQL 服务启动后停止
    查看>>
    PostgreSQL 辟谣存在任意代码执行漏洞:消息不实
    查看>>