起因是看到了 B 站上的这个视频: 📺 【大厂APP为什么越来越臃肿?深度分析软件变大的秘密】 👉 点击观看视频 (Bilibili)
结合我之前在 B 站发的一些动态,今天从开发者的角度,来吐槽一下国内软件生态的种种怪象。
💩 为什么国产应用全都是“屎山”?
从开发者的角度来看,国产应用普遍极其不遵循开发规范。
Google Play 商店有着一套完整的审核流程和严格的 TOS(服务条款),而不像国内的各种流氓应用商店,基本只查一查有没有明显的病毒就放行了。
还有一点很现实的是,国外的开发者普遍都很懂怎么去写好一个 APP,会尽全力去优化性能、缩减体积。打个比方,你要应聘国外某知名 APP 的软件开发,光有文凭是绝对不行的,你得真刀真枪地展现你的代码能力。相比之下,国内有些所谓的大厂,招进去的人可能只培训了半年,凭个文凭就能进,写出来的代码完全是一坨屎山。懒得自己写框架就去“借鉴”国外的 APP,结果抄又抄不明白,最终产出的就是一坨又一坨的电子垃圾。
📦 拆分安装包 (Split APKs) 的降维打击
国外现在大部分应用都在使用分包安装包架构(比如 apks 或 xapk 等格式)。
这种架构的优势在于,系统可以将不同架构的原生库文件(arm64、x86 等)和语言包文件拆分成好几个独立的 Split。当你在商店下载安装时,系统会只选择适合当前设备的 Split 进行拉取和安装。安装后,整体体积占用将近减少一半!
这一点和国内那些把所有杂七杂八的垃圾资源全塞进一个母包里的流氓软件环境完全不一样。
🍎 为什么同一个软件,安卓做的不如 iOS?
经常看到有人解释说,安卓 APP 臃肿是为了“适配配置低的设备”。只能说这纯粹是忽悠外行的“大众化”解释。
iOS 和安卓在软件运行层有着本质的区别:
- iOS 机制: 编译好的代码可以直接与硬件底层通信运行。
- Android 机制: 因为开源的特性,系统要兼容考虑使用各种不同编程语言的开发者。所以每一个安卓软件在底层其实是运行在一个 JVM(Java 虚拟机,现在是 ART)里面的。你每开一个软件,就相当于在底层启动了一个精简版的虚拟机!虽然现在的处理器算力让这种性能损耗可以忽略不计,但它导致的物理运存 (RAM) 占用必定会非常高。
此外,开发环境的完善度也大相径庭。苹果官方给 iOS 开发者配置了极其规范的模板,加上审核极其严苛,逼着开发者去优化。而 Android 开发环境在国内基本属于是“想怎么写就怎么写”。本来国内 APP 就不遵循开发规范,用户体验肯定好不到哪里去。但如果你去看看受 Google Play 严格审核流程约束的海外版 APP,其用户体验其实是完全可以媲美 iOS 的。
🌐 顺带复习一下“哄懵” (鸿蒙)
鸿蒙用的是 AOSP (Android Open Source Project) 系统代码。AOSP 是一种不需要谷歌官方商业授权就可以随便拿去用的底层安卓开源版本,只是它剥离了 GMS (Google Mobile Services) 框架。
目前鸿蒙 4.0 的底层其实就是安卓 12。说白了确实是套壳,它自己做了一套基于 Linux 的系统,然后让 AOSP 运行在这个底层 JVM 环境里面而已。