1

当我使用旧的 .apk 时,我的应用程序在安装后的重量为 12mb。我想使用 Android App Bundle 进行切换,所以我:

  1. 用过的

    毕业包

获取 .aab 文件(重量:15mb - 用于比较 .apk 为 16 mb)

  1. 用过的

    bundletool build-apks 生成的 .apks 文件重 80mb!

  2. 用过的

    bundletool 安装-apks

并安装在我的手机上,但干净的安装重量只有 25mb! 因此,安装后的重量不会低于之前的约 16mb - 它的重量更显着。

我在 Moto G5、Android Oreo 上测试了它(可绘制对象是:xxhdpi)

我做错什么了吗?也许这是来自 bundletool 的错误?

编辑: 在第 2 步中使用标志 --connected-device 时。生成的 .apks 小得多,但最终(第 3 步)我的应用程序的最终存储空间仍然是 25/26mb :(

4

3 回答 3

2

Android 报告的大小是你的应用在设备上占用的大小:因为平台优化了 dex 文件,它在设备上占用的大小可能比你在机器上看到的文件的实际大小大得多。

Play Console 报告的大小是下载大小,通常比您在机器上看到的文件小,因为它被进一步压缩

于 2018-11-29T18:36:21.463 回答
2

Google Play 的新应用程序服务模型称为动态交付,然后使用您的应用程序包为每个用户的设备配置生成和提供优化的APK,因此他们只下载运行您的应用程序所需的代码和资源。您不再需要构建、签署和管理多个 APK 来支持不同的设备,并且用户可以获得更小、更优化的下载。

据我了解,AAB可能会更大,但是当手机安装应用程序时,Google Play 会为该特定设备生成 APK,这会更小

例如:

我的 ABB 文件是 30MB。

当我通过 Google Play 安装我的应用程序时,手机上的文件大小只有 10MB。

于 2021-03-01T10:25:15.157 回答
1

我从https://developer.android.com/guide/app-bundle/了解到的

Bundle 是一种新的上传格式,包含您应用的所有编译代码和资源

Google Play 的动态交付使用您的 Android App Bundle 来构建和提供针对每种设备配置进行了优化的 APK。通过删除其他设备所需的未使用代码和资源,最终用户可以下载更小的应用程序。

所以基本上 apk 将使用动态交付构建,它将仅结合必要的资源,并确保安装在特定设计上的构建得到优化。没有提到捆绑包的大小更小,但它确保最终用户的下载大小会更小。

但是我们为什么要考虑使用 Android App Bundle?

首先,该方法为您的代码库提供了一个干净且分离的结构。由于捆绑包的工作方式(尤其是动态交付,我们稍后会介绍),按功能进行的模块化将成为您应用程序的一部分。这类似于即时应用程序中的模块化方法或通用的按功能模块化方法。无论如何,这有助于解耦应用程序的不同部分,并有助于使您的代码库更易于使用。

以前我们可能需要构建多个 APK 以针对不同的 API 版本、设备类型等——Android App Bundles 意味着我们现在只需上传单个工件和我们所有的应用程序资源,工具将负责处理什么需要构建并交付给我们的用户。这基本上为我们自动化了这个过程,意味着我们可以将重点转移到我们开发过程的其他部分。

由于 App Bundle 将构建针对特定设备及其配置的 APK,这意味着交付的 APK 通常会具有较小的大小。这实际上取决于您的应用程序,因为主要节省将来自密度/区域设置特定资源和任何其他未使用的代码。App Bundles 的早期采用者在这些大小节省中的一些显示了一些很好的结果:

著名应用

应用程序包向我们介绍了一个称为动态交付的新概念。这允许我们的应用程序向用户提供新功能,并允许在运行时下载和安装它们作为我们应用程序的扩展。这使我们能够缩小应用程序的初始大小,并将这些附加功能仅提供给可能实际使用它们的用户。

很快,app bundle 格式将支持对 bundle 的即时启用——这意味着用户无需安装我们的应用程序即可立即启动我们的功能模块,类似于即时应用程序当前的工作方式。

于 2018-11-16T13:04:18.450 回答