“鸿蒙系统2.0兼容安卓的APK应用软件”、“微软宣布即将发布的Windows11可以直接安装运行安卓APK应用软件”这两件事的加持之下,Google宣布弃用APK而采用全新的AAB应用软件格式就有点耐人寻味了。
于是很多人就对这件事进行了揣测和润色:“Google意欲对鸿蒙进行阻击和封杀,防止鸿蒙利用安卓生态圈进行成长”、“Google弃用APK格式更改为AAB格式,Windows11原生支持安卓软件这件事要凉凉了”、“Google将安卓应用软件的格式从APK更改为AAB格式,是不想安卓成为别人的附属品,想兼容就兼容”。
AAB格式的全称是android app bundle,它是谷歌在2021年推出的格式,直到现在谷歌才宣布:“从2021年8月起,新应用需要使用android app bundle这个格式才能在Google Play上发布”。
实际上AAB可以理解为APK的动态打包,AAB借助Split Apk完成动态加载,大幅度减少应用软件的体积。比如,在APK项目中会同时包含xxhdpi、xhdpi,或者同时包含x86、arm、arm64bit的各一套so库,这些都会全部的装进用户的手机中,而Google Play基于AAB文件处理,我们在Google Play下载应用时会获取你的硬件信息,然后App Bundle会帮我们拼装好一个APK,只有手机硬件相应资源,而其他无关的都会被剔除。
AAB和APK的文件结构基本是保持一致的,只不过android app bundle对于apk的资源从多个维度进行了拆分。这样Google Play就能通过android app bundle进行动态的交付,手机硬件需要什么就给什么。另外android app bundle也支持模块化,将一个apk拆分成多个apk,按照需要进行加载,包括了C/C++ libraries。
android app bundle最终实现的结果和我们所理解的插件有异曲同工之妙,只不过android app bundle需要一过Google Play才能做到按需加载。
国内无法直接使用Google Play,所以也就无法使用AAB这种分发样式,但爱奇艺的开源框架Qigsaw就是一套android app bundle实现的安卓动态组件分发的方案,无需重新安装应用就可以动态的进行组件分发。所以不用担心国内不能使用android app bundle,这项技术国内手机厂商的应用市场很快就会跟进的,毕竟android app bundle并不是什么见不得人的秘密。
APK并没有死,只是它进化了,拆分成了更小的APK单元,这种新的模式毫无疑问显著的减小APP的体积,这样可以花费更少的时间来下载或者安装在存储空间更小的设备上。android app bundle是开源的并且会向后兼容,虽然APK会拆分成很多个APK,但在每个设备配置上仅会生成一个APK,而不是使用拆分的APK,在遥远的未来android app bundle可能会以另一种形态而存在,但不是现在。
直到现在小伙伴是否会认为谷歌的AAB格式是为了狙击鸿蒙系统、Windows11而出现,AAB格式并不会妨碍鸿蒙系统、Windows11对于安卓应用的支持。上面的神逻辑也并不符合谷歌开源、开放的姿态,谷歌只会开发出更为新颖、创新的东西来续写他的新神话,而不是活在狭小的格局里。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!