正文
① 因安卓而被熟知的APK格式
一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。
在Android平台中,dalvikvm的执行文件被打包为apk格式,最终运行时加载器会先解压,然后获取编译后的androidmanifest.xml文件中的permission声明对安全访问的限制,要知道仍然存在很多安全限制,但将apk文件传到/system/app文件夹下会发现执行是不受限制的。
也许我们平时安装都不会选用这个文件夹,但在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有root权限。
② 安卓宣布启用AAB格式
据悉,安卓早在2018年推出了AAB新格式(AAB全称为“Android App Bundles”),安卓声称这种新格式将使应用程序文件更小。
目前在Google Play数百万个应用程序中,已经有数千个应用程序率先跟进了AAB格式。
现在安卓宣布AAB正式取代Android APK,从今年8月份开始,所有提交到Google Play商店的新应用必须采用AAB格式。
分拆 APK (在 Lollipop 中引入) 是从给定的 Android App Bundle 生成的,其行为与单个 APK 无异。一个典型的应用可以获得一个基础 APK 和多个配置 APK。
而且,如果应用具有动态功能,用户也可以获得动态功能 APK 及其配置 APK。基本 APK 包含所有设备配置共有的文件,如清单文件。
配置 APK 是为您生成的,每个之中都包含有特定设备配置的相关资源:语言、CPU 架构或屏幕像素密度。因此,用户将获得标准的基本 APK (与所有其他设备一样) 以及仅包含用户设备相关资源的配置 APK。
这意味着,如果我使用的是一台 Android One 手机 (小米 A1) 而且我设置的主要语言是英文,则这台手机将获得基础 APK 以及支持英文、arm64 CPU 架构和 xhdpi 屏幕分辨率的配置 APK。
更棒的是,当设备配置 (如语言) 发生变化时,Google Play 会检测到它,并下载该语言的配置 APK。为了进一步降低 APK 大小,我们正计划推出基于纹理压缩格式、图形 API 和新平台功能的分发方案。
动态功能 APK 包含用户首次安装应用时不需要的应用功能代码和资源。开发者可以把这些用途或功能添加到他们的应用中,Google Play 会按需提供这些动态功能模块,而不是在安装时统一添加,从而进一步减少应用下载体积。
这也很好理解:我们有必要将那些消耗空间且在安装时根本用不着的功能,以及那些很少用得着的功能,都打包进动态功能模块中,这将显著减少用户安装时的文件下载量。
在如今,很显然构建一个统一的臃肿的 APK 的做法已经过时了。Android App Bundle 代表着 Android 应用交付的未来,接下来我们就可以看到如何构建这样的一个安装包。
③ 安卓APP即将迎来大瘦身
了解ABB是什么和它的工作原理以后,人们不禁会好奇ABB究竟能让APK程序占用的空间小多少?
目前,国内的开发者将所有资源统一放在单个 APK 中,这样就会导致 APK 特别庞大,而AAB在压缩APK体积方面具有优势。
而为了缩小体积,部分开发者会有意缩减 APK 中的 ABI 目录。例如,将 arm64-v8a 的 SO 从 APK 中去除,只留下 armeabi-v7a 的 SO。但这种做法使得64位 CPU 的手机无法发挥出其64位的运算优势,降低程序运行速度。
除了压缩体积外,ABB在“ 防二次打包”一类安全性上也有所表现,可安卓这一次改动真是技术更迭的推动又或者为了给用户更好的使用体验吗?
④ 想要收拢权限的安卓
.aab 模块引入了 Split APK 概念。简单的来讲,就是在安装前,会自动检测用户的硬件配置,然后以多个 .apk 的形式安装应用。可目前,使用 Split APK 的应用程序,用户是无法直接提取安装的,都需要借助第三方工具来备份安装。这意味着,未来用户在非谷歌应用商店的第三方平台,下载安装应用会越来越困难。
虽然 .aab 模块化特性,极大的提升了开发者的更新维护的便捷性,节省了用户在安装应用的时间和存储空间 。就因为 .aab 的存在,随着用户使用设备、所在环境的不同,所安装的应用可能也不尽相同,应用也就是“不完整的”。
并且,通过官方文档,我们发现了:使用 app bundle ,开发者就必须加入 Google Play 应用签名计划。签名相当于打上唯一的电子标签,因此,如果应用被以非正常方式提取分享,就可能导致签名改变,最终影响应用运行。除非,开发者自行在第三方平台提供完整的应用安装包。
只能通过指定应用商店下载、应用“不完整”、分享限制。这些重重限制,Android 用户都有受到影响。
再往深处想一下,如果说 .aab 应用格式落实,对 Android 用户而言,只是增加了第三方下载应用的难度。那么对于鸿蒙 OS 而言,这可能是一个巨大的挑战。
目前鸿蒙 OS 的软件大多还是以安卓应用为主。所以如果谷歌全面使用 .aab ,肯定会对鸿蒙产生不利条件。
当然,这样的想法或许是我们多心了,究竟安卓应用这一次改变剑指何处,恐怕还需要时间来验证。
江西省南昌市 1F
登录回复
不管怎么弄,谷歌也是想完全控制安卓发展,第三方应用商店,鸿蒙,微软都会从安卓被孤立,话说鸿蒙啥时候不兼容安卓自己玩了,那才有意思
广西南宁市 2F
登录回复
Play商店事实证明只是减少了下载体积,安装后还是体积还是大的离谱。