整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

Android 用户想必对 APK 并不陌生。APK 是 Android Package 的缩写,即Android 安装包,基于 ZIP 压缩包格式,通过把 Android SDK 编译工程打包成一个 Android 系统支持的安装程序文件,几乎所有 Android 应用程序都以这种格式发布。

但自下个月起,APK 格式要被谷歌弃用了。

近日,谷歌宣布:自 2021 年 8 月起,Google Play 将要求开发者以 Android App Bundle (以下简称 AAB)格式发布新应用,该格式将取代 APK 作为标准发布格式

为何要从 APK 转变为 AAB?

一直以来,Android 首选的应用程序包就是 APK,而一个 APK 中往往包含应用代码、图片、音频和开发者生成的应用签名密钥等大量资源。

不仅如此,由于 Android 设备规格各异,开发人员还需根据设备的不同屏幕密度(320dpi、480dpi 等)、处理器(ARM、ARM64、x86)、用户所在的不同地区,在 Google Play 中构建和上传多个 APK,以此才能在用户点击“安装”时,在其设备上安装最适配的 APK。

但在这种情况下,应用开发者便承受太多:不仅要开发应用,还要管理许多 APK 以支持大量设备。因此为了省时省力,大多数开发者通常都会选择构建一个通用 APK,即包含语言包、代码等在内的所有资源。不论用户身处何处、使用何种规格的设备,只需下载这个通用 APK 即可。

说到这里,你或许发现了问题所在:包含所有资源的通用 APK 太大了。用户分明只需其中与自己设备相适配的资源,却要把整个 APK 都下载下来,不仅延长了安装时间,也占用了更多的带宽。

为了解决这个问题,谷歌在 2018 年 Google I/O 大会上推出了 AAB 格式,希望以此减少开发者的负担,同时也有助于减少应用大小、安装时间和带宽消耗,提高用户体验。

简单来说,AAB 格式其实并不是一个全新的应用安装包,你可以将它当做一个容器,里面包含着一个基本 APK 和多个用于特定配置的 APK

而谷歌在这之中则充当“筛选”的角色:一旦开发者选择使用 AAB 格式发布应用,谷歌就会根据用户的设备配置从中生成优化后的 APK 提供给用户。对用户而言,这样的 APK 体积小、安装快,对开发者来说也省事:不必再为各种设备管理一大堆 APK。

因此,总体来看,谷歌要求下个月以 AAB 格式发布新应用的决定主要面向开发者,对用户而言影响不是太大,因为最终在设备上安装 Android 应用的打包格式还是 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 的担忧

虽然从结果看来,以 AAB 格式分发新应用对开发者和用户都有益处,但还是有部分人对此有些担忧。

有人担心从 APK 变为 AAB 格式会太复杂。但谷歌表示:“对于大多数应用而言,构建 AAB 文件来替代 APK 文件仅需要少量工作。”它指出 App Bundle 是一种受主流构建工具支持的开源格式,因此在 Play Core 原生 SDK、Play Core Java SDK 和 Play Core Kotlin SDK 的助力下,无论用户偏好哪种编码环境,都可以轻松开始使用可选的高级 App Bundle 功能。此外,AAB 的要求仅适用于新应用,现有应用及面向特定 Google Play 用户的私人应用目前无需遵从此要求。

有人对与谷歌共享私人签名密钥表示担忧(签名密钥是验证 APK 完整性的重要信息,谷歌从 ABB 中生成优化的 APK,因此签名密钥也将包含在 ABB 中),对此谷歌表示,所有“签名密钥都将存储在谷歌用来存储自己的密钥的同一基础设施上” ,因此开发者的私人签名密钥都会受到严密的安全保护。

还有人担心因为 AAB 不能在 Google Play 以外的地方下载,会对如亚马逊应用商店等第三方应用商店造成很大影响。但据了解谷歌已经开发了一个名为 bundletool 的开源工具,允许开发人员从 AAB 包中创建 APK,因此想在第三方商店中发布 Android 应用程序的开发人员可以手动导出其应用的 APK 版本。

那么对于谷歌的这一决定,你有什么看法吗?

参考链接:

  • https://beebom.com/apk-vs-aab/

  • https://mp.weixin.qq.com/s?__biz=Mzk0NDIwMTExNw==&mid=2247493854&idx=1&sn=cfccb6ee2d3556fa6cd35ba3a4125df5&chksm=c32ae42cf45d6d3a014e2c148917072dce17fa0524274ee2d90cd7ca7a5a8710f1308a016a7a&mpshare=1&scene=1&srcid=0708jLyLA5vdqSK37gE3fhkj&sharer_sharetime=1625703670494&sharer_shareid=a9f601a40d19fefc258fa43968f938c3&version=3.1.8.3108&platform=win#rd

开发者必备的知识图谱来啦!60+专家,13个技术领域,CSDN 《IT 人才成长路线图》重磅来袭!直接扫码或微信搜索「CSDN」公众号,后台回复关键词「路线图」,即可获取完整路线图!

谷歌弃用 APK 格式!替代品 AAB 有何优势?相关推荐

  1. android动态壁纸是什么格式的,为什么动态壁纸为APK格式? -

    动态壁纸需要安装,并且apk格式是Android的一种特殊应用程序格式. 动态壁纸相当于一个应用程序,当然,apk ps: 不要说您被用作计算机桌面和屏幕保护程序. . . 您使用的是akp格式,当然 ...

  2. 名编辑电子杂志大师教程 | 如何直接输出安卓apk格式?

    如何制作安卓APK电子书? apk是用于安卓设备,包括安卓手机以及平板离线阅读的格式,最新版名编辑2.4.9.9开始支持直接输出apk格式,具体操作步骤如下: 第一步:点击 第二步:选择apk格式 第 ...

  3. 如何提取app软件的apk格式中的字体?

    1.下载apk格式的指定app软件: 2.将apk格式的文件名更改为后缀名为zip格式: 3.用winrar解压软件解压,然后就找到其中的ttf格式的字体文件. 举例说明,我想找到airbnb的app ...

  4. android apk格式,apk是什么文件格式?.apk文件怎么打开?

    apk文件在安卓系统的普及后为人熟知,作为我们最最常用的软件安装包,你对它的了解又有多少呢? apk是什么文件 APK是AndroidPackage的缩写,即Android安装包(apk).APK是类 ...

  5. 谷歌 G1 android APK安装器 离线安装软件

    网友在购买Android手机时会发现T-Mobile G1自带了根USB转ExtUSB的数据线,但是并没有提供提供驱动光盘.Android手机网发现Google已经做好了G1的Windows版USB驱 ...

  6. Unity导出到AS中真机测试apk没有问题,aab提交到GooglePlay审核通过,但是从Google Play下载的应用闪退问题

    兄弟们,姐妹们,历尽两个月,改得我都怀疑自己适不适合搞这行了!!!真的是把网上说得可能得问题和解决方法都尝试了一遍,快疯了!! 看google开发者后台得测试报告,提供得crash信息: signal ...

  7. 利用Excel VBA将坐标点直接转换为谷歌地球的kml格式文件(ExcelToKml)

    WGS84系统为GPS全球定位系统使用的坐标系,谷歌地球使用的即为WGS84,我们在野外所用的手持GPS.带导航功能的手机以及车载GPS所用的其实都是WGS84系统,本文所讲述的是利用Excel将WG ...

  8. 谷歌弃用20多年的OKR,再创内卷神器?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 谷歌希望减少绩效 ...

  9. React的移动端项目打包成手机的app软件apk格式

    前提准备: 1.React项目npm run build打包 打包前配置 在项目打包之前需要在package.json文件中添加 "homepage": "./" ...

最新文章

  1. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
  2. hdu 1026 bfs+记录路径
  3. 计算机右键管理显示没权限,解决右键 选择打开方式提示没有权限
  4. Python Web开发:开发wsgi中间件
  5. react中样式冲突_如何通过React中的样式使您的应用漂亮
  6. mysql数据库的各种锁_关于MySQL各类锁的总结
  7. 【文末有福利】如何理解我们所处世界的复杂性?
  8. 金税盘怎么安装在电脑上_金税盘处于锁死期不能开票怎么办?
  9. P2 人体姿态估计的过去、现在和未来
  10. 阻塞模式下的超时等待
  11. Java前端技术汇总
  12. 毕业论文酒店管理系统java,基于J2EE酒店管理系统设计与实现
  13. android 设置启动画面,修改Android开机画面
  14. 查询昌吉州二中2021年高考成绩,2017新疆、昌吉州文理状元分数出炉!昌吉州这所中学喜摘文理状元桂冠!...
  15. Python串口异步通信
  16. 计算机教师的应用计划书,教师信息技术个人提升计划
  17. matlab三相变压器,simulink三相变压器
  18. IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?
  19. 利用GPS北斗卫星信号开发设计NTP网络时间服务器
  20. 高中物理:浅谈含电容的单杆模型与双杆模型的“等效“

热门文章

  1. ROS学习笔记九:用C++编写ROS发布与订阅
  2. 在有空字符串的有序字符串数组中查找(二分)
  3. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之一
  4. 525 Contiguous Array 连续数组
  5. NOIP 2000 进制转换
  6. DataGrid控件(可以实现不刷新增加删除等操作)
  7. 自动驾驶感知系统(图)侵删
  8. [Ubuntu] 使用 ibus 输入汉字
  9. 光标的覆盖模式与插入模式
  10. 函数指针和指针函数(回调函数)