前几天谷歌对开发者推送了一条消息,表示从今年8月开始,所有上传到谷歌应用商店的应用都要使用.AAB格式,而不再用原来的.APK格式。有人说啥是AAB(Android App Bundle)?那这个规定是不是为了打压鸿蒙系统呢?

啥是APK(Android application package)?

APK全称是Android application package,Android应用程序包,是一个标准的 ZIP 文件,狭义上说,他不是可执行文件,linux 上可执行文件是 ELF 文件,但是 APK 不是 ELF 文件。因此 aaa.apk == aaa.zip

apk是有什么组成的呢?

APK是由Dex文件、资源、资源表、和签名摘要四部分组成的,这四部分相辅相成,不可或缺,不然任何一个OS都无法正常的运行你带Activity的Android应用。

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(1)

一个APK文件结构为:

mete-INF Jar文件中常可以看到

res 存放资源文件的目录

AndroidManifest.xml 程序全局配置文件

classes.dex Dalvik字节码

resources.arsc 编译后的二进制资源文件

AAB又是什么呢?

ABB它是谷歌的插件化,ABB=APK动态打包,动态组件化的技术,跟Instant App不一样的是,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积。

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(2)

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(3)

打从安卓出现后,安卓应用一直就是用apk格式发布。apk是安卓系统包的简写,也是Android应用的后缀名,一直是Android系统的程序规范包格式。

其实是大家想多了,早在18年谷歌就已经推出了AAB(Android App Bundle)格式。那为什么隔了三年多才正式推出AAB格式呢?是为了优化系统还是为了应对鸿蒙的挑战?

谷歌是为了进一步巩固自的身生态,Google Play会使用App Bundle针对每种设备配置生成并提供经过优化的APK,因此只会下载特定设备所需的代码和资源来运行应用。因为AAB新格式仅限于通过 Google Play 发布的应用,而且使用AAB需要加入到Google的beta program。

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(4)

传统的APK格式,开发者需要把所有的语言、分辨率、架构等资源统统塞到安装包里,对于用户下载应用,就显得非常累赘。

相关应用通过使用AAB可以减少应用包的大小,从而提升安装成功率并减少卸载量。其中包含你应用的所有经过编译的代码和资源,它会将APK生成及签名交由Google Play来完成。简单来说AAB格式的应用可以比APK应用小15%。开发者不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。开发人员还可以更好地控制他们如何向应用分发更新,这可能会导致更快、更高效的应用更新。

而AAB格式其实是开发者打包上传的格式,它可以根据不同用户的手机分辨率、架构、语言等进行针对性分发,不适用于该手机的内容将不会被一并下载,这样就可以将原先臃肿的完整安装包减重,加快安装速度的同时,也节约了手机的空间。用户下载得到的其实还是APK格式。

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(5)

针对性的渠道分发,更有利于谷歌进一步加强自己对应用商店的管理,类似IOS系统一样,严格控制生态,巩固自己的利益。谷歌安卓以AAB替换APK安装包各种配置文件和资源文件的格式发生了较大的变化,导致原始的方案直接无法使用了。

谷歌安卓以AAB替换APK安装包对鸿蒙的发展有哪些影响?

如果说.aab 应用格式落实,对Android用户而言,只是增加了第三方下载应用的难度。那么对于鸿蒙OS而言,这可能是一个巨大的挑战。

不过,对于面向国内渠道的开发者来说,这件事在短时间内应该不会有太大影响。

谷歌强制要求APP转向AAB格式,并非禁止鸿蒙系统兼容安卓APP。部分网友说这是谷歌针对鸿蒙的举动?我并不这么觉得哈,谷歌app bundle在2018年就始推荐给开发者使用了,那个时候华为鸿蒙还没有消息呢。其次,把现有的应用打包成abb非常简单,几乎不用改动项目的源代码,所以同一个应用,在国内使用APK分发,在海外市场使用abb分发也很简单。

目前鸿蒙OS的软件大多还是以安卓应用为主,但是,目前的华为应用商店已经支持aab格式了。所以如果谷歌全面使用.aab ,那就不会对鸿蒙OS产生不利影响。AAB影响范围只有在谷歌商店和apk mirror渠道,我们基本不用这两个渠道,同时国内的应用渠道也有很多供我们选择,所以对鸿蒙系统没有任何影响。

鸿蒙系统中谷歌play可以卸载吗(谷歌要求以AAB格式替换APK格式)(6)

也有人说abb格式的应用无法在鸿蒙OS运行,是因为一些海外应用集成了谷歌的GMS服务框架,手机上若是少了GMS就没办法正常使用应用。但是谷歌GMS服务本来就没法在国内环境使用呀,国产手机一般也不会预装Google的软件。所以啊,谷歌强制要求APP转向abb格式跟华为鸿蒙OS没有一丝关系,对国内开发者也没有太大影响。

当然,这样的想法或许是我们多心了,究竟安卓应用这一次改变剑指何处,恐怕还需要时间来验证。

——————

原创:老王丨鸿蒙hms开发者高级认证持证人!学习更多鸿蒙OS相关开发技术可以关注我的公众号:鸿蒙开发者老王

,