直击“鸿蒙”?谷歌宣布:或将于8月启用AAB取代APK格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直击“鸿蒙”?谷歌宣布:或将于8月启用AAB取代APK格式相关的知识,希望对你有一定的参考价值。
参考技术A 随着国产操作系统鸿蒙的问世,关于鸿蒙要替代安卓的消息就一直未停歇。就在前几天,网上有一则消息传出,谷歌应用商店(Google Play)将从今年的8月开始,启用新的AAB应用程序文件格式来取代APK 格式。并且到那个时候,新上传到谷歌应用商店的程序必须要采用AAB的格式文件,才可以成功被采纳。
此消息一出,瞬间引起网络热议,很多人表示谷歌此举是在针对鸿蒙。因为在鸿蒙的发布会上,华为曾公开宣布“华为的鸿蒙系统可以兼容安卓的APK程序”,现在谷歌突然整这一出很明显是想让鸿蒙“尴尬”。
我们大家都知道APK 是安卓包(android Package)的简称,也一直被作为安卓的应用程序和 游戏 的标准包格式。
说到这里,不禁会有很多人问什么是AAB呢?
AAB的全称就是Android App Bundles,也只一款可以用于安卓系统的标准包格式。AAB的格式文件其实已经不是一种新东西了,早在2018年的时候,谷歌就已经宣布支持这个格式的文件了。
甚至在2020年的夏季,谷歌开发者大会上,谷歌应用商店的工程总监就曾公开表示“AAB是谷歌的重点发展领域之一”。并且还对外公布了AAB在当前的使用情况,截至到2020年夏季谷歌应用商店已有超过50万的AAB程序文件处于生产阶段。
那个时候,谷歌应用商店上平均每3个应用中,就有一个是采用AAB格式发布的,并且这种数据较2019年同期增加了近8倍之多,采用率也在呈现增长态势。不仅如此,我们大家知道的Adobe、eBay和UC浏览器这样的大型开发商同样也在采用该格式。
那为什么谷歌会选择用AAB格式呢?
虽然AAB和APK是两种不同的格式,但两种格式文件里面的东西是相似的。但是AAB相比较而言更具有优势,它可以将资源进行分开打包,因此安装包会更小,可以为用户节约更多的存储空间,用户也可以根据自己的需求进行下载。
按照谷歌应用商店的要求,此次文件格式的改变仅适用于新上架的应用程序,对于此前已经发布的应用程序不会产生影响。
但是不得不说的是与 APK 不同,AAB不能存在于谷歌应用商店之外的平台上,更不能在其平台之外进行分发。换句话说,如果文件格式由 APK 变成 AAB格式的话,那将不能再在其他应用源上提供完全相同的软件包或体验。
而谷歌强制使用AAB最为重要的原因,在于想要改善安卓的生态,不断地向苹果的ios“靠拢”。因为苹果的生态比较封闭和规范,无论是开发者发布应用程序还是用户下载应用程序,都无法绕开苹果应用商店。相比来看的话,安卓的生态碎片化非常严重,不仅如此很多厂商还喜欢对安卓进行自主的“修改”和“定制”,这样一来更加剧了开发者开发出来的软件无法兼容现象的出现。
当然,除了上述有人猜测到的谷歌此次“调整”是在针对鸿蒙的问题。还有人表示,谷歌的此次“调整”还有可能是在应对微软推出的新操作系统。毕竟谷歌宣布启用AAB取代APK的时间正好卡在了微软发布全新的Windows 11系统数天之后。
对于谷歌的此波操作,你是怎么看的呢?
谷歌弃用APK包格式,转而使用AAB格式
近日,谷歌官方宣布:自 2021 年 8 月起,Google Play 将要求开发者以 Android App Bundle (以下简称 AAB)格式发布新应用,该格式将取代 APK 成为标准的Android应用发布格式。
一直以来,Android 首选的应用程序包就是 APK。APK 是 Android Package 的缩写,即Android 安装包,是一个碗基于 ZIP格式的压缩包文件,里面包含应用代码、图片、音频和开发者生成的应用签名密钥等大量资源。在制作APK包的时候,通过Android SDK 提供的打包工具打包成一个 Android 系统支持的安装程序文件,几乎所有 Android 应用程序都使用这种格式发布。
1, 为何要从 APK 转变为 AAB
一直以来,Android 首选的应用程序包就是 APK,那为什么Android要将安装包的格式从APK转变为AAB呢?有人说是为了应对鸿蒙。在我看来,其实不然,官方之所以这么做,其实是为了降低APK大小的一种手段。
总所周知,一个APK中往往包含应用代码、图片、音频和开发者生成的应用签名密钥等大量资源。不仅如此,为了兼容更多的设备,一个APK还需适配不同的屏幕密度(320dpi、480dpi 等)、处理器(ARM、ARM64、x86等等。但在这种情况下,应用开发者便承受太多:不仅要开发应用,还要管理许多 APK 以支持大量设备。
因此为了省时省力,大多数开发者都会选择构建一个通用 APK,即包含语言包、代码等在内的所有资源。不论用户身处何处、使用何种规格的设备,只需下载这个通用 APK 即可,这就造成APK包大的问题。为了解决这个问题,谷歌在 2018 年 Google I/O 大会上推出了 AAB 格式,希望以此减少开发者的负担,同时也有助于减少应用大小、安装时间和带宽消耗,提高用户体验。
所以说,AAB 格式其实并不是一个全新的应用安装包,而是一套软件的包管理方案,我们可以将它当做一个容器,里面包含着一个基本 APK 和多个用于特定配置的 APK。给予这一机制,很多公司在最近两年都用它实现了插件化和动态化下发的功能,参考文档:Android App Bundle。
因此,一旦开发者选择使用 AAB 格式发布应用,谷歌就会根据用户的设备配置从中生成优化后的 APK 提供给用户。对用户而言,这样的 APK 体积小、安装快,对开发者来说也省事:不必再为各种设备管理一大堆 APK。
AAB 的优势与特点
相较于传统的APK方式,AAB 有哪些优点呢?首先,便是上文所提到的应用体积缩小。据谷歌官方介绍,使用 AAB 生成优化的 APK 体积平均会比一般的 APK 小 15%,而这一数据会根据应用大小有较大起伏。例如 Airbnb 在从 APK 切换到 AAB 格式后应用大小减少了 22%,而 Netflix 更是减少了 57%。
其次,AAB 的 Play Feature Delivery 功能可自定义将哪些功能模块交付给哪个设备,支持安装时交付、按条件交付和按需交付等三种模式。这也就是将应用的功能拆分开来,以此大幅缩短用户下载应用的时间,其中没用的功能用户可以不下载或等到以后需要时再下载。
还有一个 Play Asset Delivery 功能,以动态方式交付大型资源可以减少用户等待时间,同时缩减交付成本。即使用 Play Asset Delivery 的游戏可通过纹理压缩格式作为交付条件,以便用户只获取适合其设备的资源,避免浪费空间或带宽。
如何打AAB包
和APK包的制作流程一样,我们也可以使用Android Studio进行AAB包的制作。首先,选择Android Studio工具栏【build】->【generate singed bundle apk】,如下图。
最后打包完成,会生成一个xxx.aab的文件,如下图:
AAB转APK
虽然从结果看来,以 AAB 格式分发新应用对开发者和用户都有益处,但还是有部分人对此有些担忧。比如,有人就担心因为 AAB 不能在 Google Play 以外的地方下载,会对如亚马逊应用商店等第三方应用商店造成很大影响。为此,谷歌已经开发了一个名为 bundletool 的开源工具,允许开发人员从 AAB 包中创建 APK,因此想在第三方商店中发布 Android 应用程序的开发人员可以手动导出其应用的 APK 版本。转化的命名如下:
abb转apk
java -jar bundletool-all-1.7.0.jar build-apks --bundle=app.aab --output=finalapp.apks --ks=onlinetv.jks --ks-pass=pass:123456 --ks-key-alias=onlinetv --key-pass=pass:123456
安装
java -jar bundletool-all-1.7.0.jar install-apks --apks=finalapp.apks
以上是关于直击“鸿蒙”?谷歌宣布:或将于8月启用AAB取代APK格式的主要内容,如果未能解决你的问题,请参考以下文章
安卓弃用APK格式,改用AAB格式,网友:华为鸿蒙还能兼容么