Android 应用程序如何缩小体积?

2021-04-16 20:44:39 +08:00
 Kirakbit

最近闲了没事自己做了个小 app,记笔记用的。打包 release 后大小 2.1mb ,我如何让它更小? 2.1mb 继续压缩到 500kb 可以实现吗?

app 项目链接: https://quick.geshkii.xyz

各位有什么指导或意见尽管跟我说,我洗耳恭听。

谢谢!

4948 次点击
所在节点    Android
18 条回复
Nangle
2021-04-16 20:53:17 +08:00
代码精简优化,所用函数和方法尽可能用执行效率高的替代。
kwanzaa
2021-04-16 21:24:56 +08:00
kifile
2021-04-16 22:13:24 +08:00
减小或压缩图片,三方包能少就少
RikkaW
2021-04-16 22:30:06 +08:00
不使用 appcompat (
sankemao
2021-04-16 22:32:40 +08:00
富文本是怎么做的
yitingbai
2021-04-16 22:42:05 +08:00
简单反编译看了一下, 首先大量的 png 图片资源是完全可以去掉的, 其次引用的库还可以减少, 比如不要使用 kotlin, 不要使用 androidx 或 appcompat 的界面库, 直接继承 Activity, 做到 500kb 完全是可能的, 举个例子, via 浏览器最新版 800 多 k, 我刚刚编译了一个 demo, 去掉了我说的这些, 只有 90k, 所以只要保证你的代码不超过 400k 就好了, 400k 的 java 代码, 发挥空间还是蛮大的
Kirakbit
2021-04-17 09:00:06 +08:00
@sankemao 富文本我用的是日本一个程序员写的 richtexteditor, 这是那个项目地址: https://github.com/wasabeef/richeditor-android
Kirakbit
2021-04-17 09:00:16 +08:00
@Nangle 好,谢谢建议!
Kirakbit
2021-04-17 09:01:55 +08:00
@yitingbai 我用 lint 分析之后发现确实如你所说这样( png 占了很大空间),那我移除 png 是直接可以在项目目录里删除吗?我下次要制作 image asset 的时候怎么让 android studio 只生成 xml 文件,不生成 png ?

谢谢你!
Kirakbit
2021-04-17 09:02:30 +08:00
@kifile 谢谢你!
Kirakbit
2021-04-17 09:02:57 +08:00
@RikkaW 不用 appcompat 是直接用 activity 代替吗?

谢谢!
fox0001
2021-04-17 15:56:29 +08:00
记得 Android 2.x 那时,绝大部分 apk 都是 kb 级别,多么美好的远古时代…
Kirakbit
2021-04-17 17:23:56 +08:00
@fox0001 是啊,不知道为什么近几年越来越大了
HarryQu
2021-04-17 22:13:52 +08:00
说点我的一些看法:

1. 你的 App 中适配了多种像素密度的手机,例如 hdpi 、xxhdpi 、xxhdpi 、xxxhdpi 。目前,多数用户的手机像素密度为 xxhdpi,以我的 App 为例,可以只保留 drawable-xxhdpi 文件夹即可(类似 iOS 中的 3 倍图)。

2. 可以将 png 图片转换为 webp 格式,当然这一步不是必须的,因为我看你的 App 中,多数图片都不是很大。AndroidStudio 中右键即可以转换。如果将来有将来有大 png 图片的话,可以在 https://tinypng.com/ 网站上进行压缩。

3. 如上面哥们所言,考虑移除 androidx 或 appcompat 的界面库。这一步可以大幅减少你的 App 体积。但是如果你依赖的第三方库依赖这些库的话,就比较难办了。

4. 同目前市面上的 App 相比,2.1M 其实也不是很大,可以暂时将精力放在其他方面。当然优化是一个永恒的话题,但也没必要过度优化。
Kirakbit
2021-04-18 14:50:13 +08:00
@HarryQu
我现阶段的做法是把 png 图片完全移除用 xml,我不知道这样做的坏处是什么,但是现阶段可以编译。移除 androidx 我现在在做,但移除 png 已经带来明显的体积减小了。

同时,我赞同你说的过度优化问题。的确,我现在应该把重心放在增加新功能上。


谢谢!
kingiis
2021-04-19 15:01:20 +08:00
最快的方式
1.图片全用 webp ,给你个 png 你拉到项目里 全选 右键 转一下就好
2.少复制代码 使用两次以上的代码就直接 扔一个工具类里去

其他的都是 kb 级别的可以忽视
q197
2021-04-20 10:36:51 +08:00
@fox0001 appcompat 用了兼容性方便很多 还有如果用 kotlin 也会增加一点体积
nicocho
2021-04-20 13:53:08 +08:00
前几天研究了下,拼多多 apk 只有 30 多 M, 安装后是 120 多 m 。
一个 dex 压缩前是 10m,压缩后大概不到 3m, 够厉害的
估计都是单独用了 7z 的

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

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

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

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

© 2021 V2EX