安卓的安装机制是出于什么原因做成现在这种的呢?

2022-03-29 23:38:42 +08:00
 equationl

之前和群友在讨论手机储存空间问题,突然想到,安卓的安装机制有点奇怪,它会把完整安装包存一份,安装包里面的资源(.so 等)提取出来存一份,编译优化后的代码又存一份。这就使得安装完成占用空间翻了很多倍。

比如我刚试了一下,我自己写的一个 compose 测试程序,安装包 2mb 不到,安装完成占用空间已经接近 30mb 了。

有点疑惑谷歌是出于什么考虑才这样做的呢?

为何不直接解压安装包内所需资源后直接移除完整安装包呢?可能是安卓底层实现不适宜这样做?对这方面不太懂,所以比较疑惑。

甚至群里大佬还说了一个极端情况:

还有个问题是针对游戏的, 国内没什么好的分发平台, 游戏资源都直接打包到 apk , 然后有的游戏还要从 apk 里面复制到 android/obb 里面。

说到分发问题,play 确实可以打包 aab ,但是这样能解决这个问题吗?

1269 次点击
所在节点    问与答
4 条回复
AoEiuV020CN
2022-03-30 09:17:50 +08:00
so 这个已经改了,现在 minSdk>26 的话默认打的 apk 安装后就不会解压一份多余的 so ,
只能说以前考虑的是减少 apk 体积,现在可以分包处理所以优先考虑减少手机空间占用,
AoEiuV020CN
2022-03-30 09:19:20 +08:00
@AoEiuV020CN #1 不是>26 ,应该是>23,
AoEiuV020CN
2022-03-30 09:23:17 +08:00
查了下,是 minSdk >= 23 会默认不压缩 so ,这样就可以安装后不解压出来,直接使用 apk 内部的 so ,
https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/JniLibsPackagingOptions#uselegacypackaging
equationl
2022-03-30 12:44:01 +08:00
@AoEiuV020CN 这样啊。那还是很奇怪,为啥一个 2m 的安装包,安装后会占用 30m ,是又加了什么东西嘛

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

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

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

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

© 2021 V2EX