为什么 App Bundle 比 .apk 文件更重要?
Why App Bundle weights more than when it's .apk file?
当我使用旧的 .apk 时,我的应用程序在安装后权重为 12mb。
我想使用 Android App Bundle 进行切换,所以我:
二手
gradlew bundle
获取 .aab 文件(重量:15mb - 作为对比,.apk 为 16mb)
二手
bundletool build-apks
that produced .apks file that weight 80mb!
二手
bundletool install-apks
并安装在我的 phone 上,但只是全新安装 重量 25mb!
因此,安装后的权重不会小于 以前的 ~16mb - 它的权重更显着。
我在 Moto G5 上测试过,Android 奥利奥(绘图是:xxhdpi)
我是不是做错了什么?也许这是来自 bundletool 的错误?
编辑:
在第 2 步中使用标志 --connected-device 时。生成的 .apks 更小但最后(第 3 步)我的应用程序的最终存储仍然是 25/26mb :(
我从https://developer.android.com/guide/app-bundle/
中了解到的
Bundle is a new upload format that includes all your app’s compiled
code and resources
Google Play’s Dynamic Delivery uses your Android App Bundle to build
and serve APKs that are optimized for each device configuration. This
results in a smaller app download for end-users by removing unused
code and resources needed for other devices.
所以基本上 apk 将使用动态交付构建,动态交付将只组合必要的资源,并确保安装在特定设计上的构建得到优化。没有提到包大小更小,但它确保最终用户的下载大小会更小。
但我们为什么要考虑使用 Android App Bundle?
首先,该方法为您的代码库提供了一个干净且分离的结构。由于捆绑包的工作方式(尤其是动态交付,我们稍后会谈到),按功能模块化将成为您应用程序的一部分。这类似于 Instant 应用程序中的模块化方法或一般的按功能模块化方法。无论如何,这有助于分离应用程序的不同部分,并有助于使您的代码库更易于使用。
我们以前可能需要构建多个 APK 以针对不同的 API 版本、设备类型等 — Android App Bundle 意味着我们现在可以只上传单个工件我们所有的应用程序资源和工具都将负责处理需要构建和交付给用户的内容。这基本上为我们自动化了这个过程,意味着我们可以将注意力转移到开发过程的其他部分。
由于 App Bundle 将构建针对特定设备及其配置的 APK,这意味着交付的 APK 通常较小。这实际上取决于您的应用程序,因为主要节省来自 density/locale 特定资源和任何其他未使用的代码。 App Bundle 的早期采用者节省的一些大小显示了一些很好的结果:
Famous Apps
应用程序包向我们介绍了一个称为动态交付的新概念。这允许我们的应用程序向用户提供新功能,并允许在运行时下载和安装它们作为我们应用程序的扩展。这使我们能够缩小应用程序的初始大小,并仅向可能实际使用它们的用户提供这些附加功能。
很快,app bundle 格式将支持 bundle 上的即时启用 — 这意味着用户将能够立即启动我们的功能模块,而无需安装我们的应用程序,类似于即时应用程序当前的工作方式。
Android报告的大小是您的应用在设备上占用的大小:因为平台优化了dex文件,它在设备上占用的大小可能比文件的实际大小大很多你在你的机器上看到。
Play 管理中心报告的大小是下载大小,通常比您在计算机上看到的文件小,因为它被进一步压缩
Google Play 的新应用服务模型称为动态交付,然后使用您的 app bundle 生成并提供优化的 APKs 对于每个用户的设备配置,因此他们只下载 运行 您的应用程序所需的代码和资源。您不再需要构建、签署和管理多个 APK 来支持不同的设备,用户获得更小、更优化的下载。
据我了解,AAB可能更大,但是当phone安装应用程序时,Google Play 将为该特定设备生成 APK,它会更小。
例如:
我的 ABB 文件是 30MB。
当我通过 Google Play 安装我的应用程序时,phone 上的文件大小只有 10MB。
当我使用旧的 .apk 时,我的应用程序在安装后权重为 12mb。 我想使用 Android App Bundle 进行切换,所以我:
二手
gradlew bundle
获取 .aab 文件(重量:15mb - 作为对比,.apk 为 16mb)
二手
bundletool build-apks that produced .apks file that weight 80mb!
二手
bundletool install-apks
并安装在我的 phone 上,但只是全新安装 重量 25mb! 因此,安装后的权重不会小于 以前的 ~16mb - 它的权重更显着。
我在 Moto G5 上测试过,Android 奥利奥(绘图是:xxhdpi)
我是不是做错了什么?也许这是来自 bundletool 的错误?
编辑: 在第 2 步中使用标志 --connected-device 时。生成的 .apks 更小但最后(第 3 步)我的应用程序的最终存储仍然是 25/26mb :(
我从https://developer.android.com/guide/app-bundle/
中了解到的Bundle is a new upload format that includes all your app’s compiled code and resources
Google Play’s Dynamic Delivery uses your Android App Bundle to build and serve APKs that are optimized for each device configuration. This results in a smaller app download for end-users by removing unused code and resources needed for other devices.
所以基本上 apk 将使用动态交付构建,动态交付将只组合必要的资源,并确保安装在特定设计上的构建得到优化。没有提到包大小更小,但它确保最终用户的下载大小会更小。
但我们为什么要考虑使用 Android App Bundle?
首先,该方法为您的代码库提供了一个干净且分离的结构。由于捆绑包的工作方式(尤其是动态交付,我们稍后会谈到),按功能模块化将成为您应用程序的一部分。这类似于 Instant 应用程序中的模块化方法或一般的按功能模块化方法。无论如何,这有助于分离应用程序的不同部分,并有助于使您的代码库更易于使用。
我们以前可能需要构建多个 APK 以针对不同的 API 版本、设备类型等 — Android App Bundle 意味着我们现在可以只上传单个工件我们所有的应用程序资源和工具都将负责处理需要构建和交付给用户的内容。这基本上为我们自动化了这个过程,意味着我们可以将注意力转移到开发过程的其他部分。
由于 App Bundle 将构建针对特定设备及其配置的 APK,这意味着交付的 APK 通常较小。这实际上取决于您的应用程序,因为主要节省来自 density/locale 特定资源和任何其他未使用的代码。 App Bundle 的早期采用者节省的一些大小显示了一些很好的结果:
Famous Apps
应用程序包向我们介绍了一个称为动态交付的新概念。这允许我们的应用程序向用户提供新功能,并允许在运行时下载和安装它们作为我们应用程序的扩展。这使我们能够缩小应用程序的初始大小,并仅向可能实际使用它们的用户提供这些附加功能。
很快,app bundle 格式将支持 bundle 上的即时启用 — 这意味着用户将能够立即启动我们的功能模块,而无需安装我们的应用程序,类似于即时应用程序当前的工作方式。
Android报告的大小是您的应用在设备上占用的大小:因为平台优化了dex文件,它在设备上占用的大小可能比文件的实际大小大很多你在你的机器上看到。
Play 管理中心报告的大小是下载大小,通常比您在计算机上看到的文件小,因为它被进一步压缩
Google Play 的新应用服务模型称为动态交付,然后使用您的 app bundle 生成并提供优化的 APKs 对于每个用户的设备配置,因此他们只下载 运行 您的应用程序所需的代码和资源。您不再需要构建、签署和管理多个 APK 来支持不同的设备,用户获得更小、更优化的下载。
据我了解,AAB可能更大,但是当phone安装应用程序时,Google Play 将为该特定设备生成 APK,它会更小。
例如:
我的 ABB 文件是 30MB。
当我通过 Google Play 安装我的应用程序时,phone 上的文件大小只有 10MB。