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

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

  •  1
     
  •   Kirakbit · 64 天前 · 1535 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    谢谢!

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

    谢谢你!
    Kirakbit
        10
    Kirakbit   63 天前
    @kifile 谢谢你!
    Kirakbit
        11
    Kirakbit   63 天前
    @RikkaW 不用 appcompat 是直接用 activity 代替吗?

    谢谢!
    fox0001
        12
    fox0001   63 天前 via Android
    记得 Android 2.x 那时,绝大部分 apk 都是 kb 级别,多么美好的远古时代…
    Kirakbit
        13
    Kirakbit   63 天前
    @fox0001 是啊,不知道为什么近几年越来越大了
    HarryQu
        14
    HarryQu   63 天前
    说点我的一些看法:

    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
        15
    Kirakbit   62 天前
    @HarryQu
    我现阶段的做法是把 png 图片完全移除用 xml,我不知道这样做的坏处是什么,但是现阶段可以编译。移除 androidx 我现在在做,但移除 png 已经带来明显的体积减小了。

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


    谢谢!
    kingiis
        16
    kingiis   61 天前
    最快的方式
    1.图片全用 webp ,给你个 png 你拉到项目里 全选 右键 转一下就好
    2.少复制代码 使用两次以上的代码就直接 扔一个工具类里去

    其他的都是 kb 级别的可以忽视
    q197
        17
    q197   60 天前
    @fox0001 appcompat 用了兼容性方便很多 还有如果用 kotlin 也会增加一点体积
    nicocho
        18
    nicocho   60 天前
    前几天研究了下,拼多多 apk 只有 30 多 M, 安装后是 120 多 m 。
    一个 dex 压缩前是 10m,压缩后大概不到 3m, 够厉害的
    估计都是单独用了 7z 的
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1420 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 00:53 · PVG 08:53 · LAX 17:53 · JFK 20:53
    ♥ Do have faith in what you're doing.