如何针对不同的用户给出最优的安装体验,正是 Android App Bundle 所要解决的问题。本文将阐述 App Bundle 可以带来的好处,并演示如何使用这种全新的分发功能。 ?...如果因为上述原因带来的臃肿的 APK 让您颇为困扰,现在解决方案就在眼前 —— 今年在谷歌 I/O 上发布的 Android App Bundle,可以帮助开发者用更小尺寸的 APK 交付出同样卓越的应用...配置 APK 是为您生成的,每个之中都包含有特定设备配置的相关资源:语言、CPU 架构或屏幕像素密度。...= APK Android App Bundle 与 APK 有一些相似之处,但它们是截然不同的,且用于不同的目的。...较小的应用意味着用户不太可能卸载您的应用以在其设备上腾出空间。 Android App Bundle 是单一工件,因此无需构建、签名或管理多个 APK。
下图中为.aab中的内容: 展开后如下: 编译 Android App Bundle 文件 编译Android App Bundle 需支持以下条件: 1 Android Studio 3.2 或者更高版本...有以下两种方式: 使用 bundletool 在本地测试 Android App Bundle 在Google Play中通过网页分享的形式 这里介绍第一种方式进行测试 1、先从github 下载...build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks 或使用: //app bundle 为应用支持的所有设备配置生成一组...tips: 3.1: Android 5.0(API 级别 21)或更高版本,bundletool 会推送在该设备上运行您的应用所需的基础 APK、动态功能 APK 和配置 APK 3.2: Android...4.4(API 级别 20)或更低版本,bundletool 会查找兼容的多 APK 并将其部署到您的设备 其它 bundletool 的使用可参考: 官方文档介绍 参考文档: Android App
本系列文章致力于帮助开发者们打造更好的现代 Android 开发体验,敬请关注。 今天为大家发布本系列文章中的第五篇: 打造您的首个 app bundle。...使用 app bundle 并不需要改变现有的代码库。 您只需要通过命令行或者 Android Studio 即可构建一个 Android App Bundle。...每一个功能模块或者不同配置的 apk 文件包含了其对应的资源及代码,而 base 模块会将所有的这些模块集成到一起。...除非必须,不然我不建议修改这个部分,因为设置 enableSplit 为 false 会极大地增加您应用在设备安装时占用空间的大小。...// 默认值为 true // 这意味着每个不同的相关配置会生成一个分解后的 apk。
回首 Android 的第一个十年 十年来,在 Android 上发布应用的流程如下: 第 1 步:在 IDE 中为您的应用编写代码,例如 Android Studio。...第 2 步:现在,当您准备好测试或发布应用时,您可以将其构建为 Android App Bundle,也就是新的 Android 应用发布格式。...Android App Bundle 是开源和向下兼容的 (对于 Android L 之前的版本,Play 会自动使用多 APK——即 Play 为每个设备配置生成一个 APK,包含所有语言资源,而不是使用分拆...使用 Android App Bundle 的开发者的 APK 大小平均比之前采用的“完整 APK”小 3.5% (“完整 APK”是指一个 APK 包含了 Android App Bundle 支持的所有设备配置和语言所需的一切...刚刚公布的一个例子是:支持未压缩的本地代码库,这是 Android Marshmallow 中引入的一个很少使用的平台功能。使用 App Bundle 的开发者无需额外的工作即可获得此功能。
在用户设备上,相比于通用 apk 文件,使用 Android App Bundle 的应用文件大小平均**缩减了 15%**。...您只需简单地切换到 Android App Bundle,就可以利用其节约文件大小和改进发布,无需改变应用的任何代码。...想要了解更多关于如何构建您的第一个 Android App Bundle,请参阅这个系列 之前的文章。 当然您也可以利用 Play Feature Delivery 来进一步模块化以及优化安装应用。...然后,通过使用 min-api 和 max-api,您可以声明所支持的最低以及最高的 API 版本。 如果您需要为一个特定模块指定 API 版本,这些会非常有用。...不含代码的模块 有时您只想分发给用户一个类似 TensorFlow 模型的大型资源文件,在这个功能模块中,您并没有任何代码,这时请确保该模块的 AndroidManifest 文件中 hasCode 的值设置为
这个应用程序可能是多进制的,但对于低 RAM 设备没有特定的经验。我们强烈建议您使用新的 Android App Bundle 来体验高达 65% 的体积节省,而无需重构代码。...一个应用程序,不同的 APK。 针对 Android(Go 版)设备和其他所有设备使用相同的应用,但是有不同的体验。...创建不同的 APK; 一个 APK 针对新的 android.hardware.ram.low 尺寸 vs APK(s)定位其他所有设备。 两个应用。...以下是关于如何保持 APK 较小的一些建议: **使用新的 Android App Bundle 去查看大小....使用 Android App Bundle,您可以构建一个工程,其中应用程序包含已编译代码,资源和本地库。您不再需要为多个 APK 进行构建,签名,上传和管理版本代码。
本文并不是介绍Android App Bundle,因为它不是新的事物,相关的文章也有很多了,本文重点介绍的是Android App Bundle中“动态功能模块”的实际应用。...Android App Bundle Android App Bundle是基于google play的分发技术,可以有效的减少apk的大小。...当您构建 app bundle 时,Gradle 会使用子项目名称的最后一个元素在功能模块的清单中注入 属性。 指定该模块的 package name。...默认情况下,Android Studio 不会使用 app bundle 部署您的应用,而是由 IDE 构建针对部署速度(而非 APK 大小)进行了优化的 APK,并将其安装到设备中。...如需将 Android Studio 配置为通过 app bundle 构建和部署 APK 以及免安装体验,请修改运行/调试配置。
现代 Android 应用分发 如果您尚未采用 App Bundle,这意味着您错过了以下优势: Android App Bundle: Google Play 使用 App Bundle 生成并优化...关于 Android App Bundle 的一些常见问题的回答 Q:相比 APK 而言,使用 App Bundle 开发应用需要多少工作量?...您可以使用通用的应用签名密钥或使用针对不同渠道的唯一应用签名密钥,包括面向 Google Play 的唯一应用签名密钥。...此外,App Bundle 的代码透明性 是一项可选的全新功能,可检查设备上运行的代码是否是开发者最初构建并签名的代码。...若想使用 Play 应用签名,您需要提供应用签名密钥的副本,因为 Google Play 需要使用此签名副本进行签名,并向您的现有用户提供版本更新。
文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 中上架 APK 文件 , 报如下错误 ; 您上传的是可调试的 APK 或 Android App Bundle。...出于安全考虑,您需要先停用调试功能,然后才能在 Google Play 中进行发布。 详细了解可调试的 APK 和 Android App Bundle。...您上传的是在调试模式下签名的 APK 或 Android App Bundle。 请在发布模式下为 APK 或 Android App Bundle 签名。详细了解签名。...二、解决方案 ---- 参考文档 : Google Play 管理中心帮助文档 使用 App Bundle 资源管理器检查应用版本 添加或测试 APK 扩展文件 Play Feature Delivery...概览 Play Asset Delivery 添加或测试 APK 扩展文件 准备发布 为应用签名 Google Play 中 , 2021 年 8 月 之后 , 新应用需要使用 Android App
A: 我们强烈建议您使用 Android App Bundle,这是 Android 所支持的一种官方发布格式,可让您以更高效的方式开发和发布应用。...当您发布 Android App Bundle 文件到 Google Play 时,如果 Google Play 分析并发现任何一个可能设备的下载包超过 150MB 时,将会拒绝这个 App Bundle...如: 当用户首次下载您的应用时,基础 APK 加上为特定设备而构建的 APK 之和不超过 150MB。除了 Android App Bundle 方式,您也可以为不同架构发布不同的 APK 文件。...关于 App Bundle 的介绍,请参阅: developer.android.google.cn/platform/te… Q: 2019 年 8 月 1 号开始没有支持 64 位的在线应用,64...A: 在 Android 8.0 或以上的版本中,可以考虑使用 SSAID (Settings.Secure.ANDROID_ID),因为它的生成是基于设备用户安装应用签名的密钥。
Android App Bundle 是一种发布格式 —— 精确地说,是一个带有 .aab 扩展名的 zip 文件。...配置 APK 是为您生成的,每个之中都包含有特定设备配置的相关资源:语言、CPU 架构或屏幕像素密度。...Android App Bundle 代表着 Android 应用交付的未来,接下来我们就可以看到如何构建这样的一个安装包。...一些开发者甚至可以将他们的 APK 大小减半,而一些知名 app 使用 App Bundle 减小应用体积的数据也有放出来。...就因为 .aab 的存在,随着用户使用设备、所在环境的不同,所安装的应用可能也不尽相同,应用也就是“不完整的”。
此要求不适用于: 明确定位为在 Wear OS 或 Android TV (这些系统或设备目前不支持 64 位代码) 上运行的 APK 或 App Bundle。...未向运行 Android 9 Pie 或更高版本的设备发行的 APK 或 App Bundle。 我们的 32 位支持政策不会发生变化。Google Play 将继续为 32 位设备提供应用。...为符合 64 位要求做准备 我们预期对大多数开发者而言,转到 64 位应该非常简单,因为许多应用完全以非原生代码 (例如 Java 编程语言或 Kotlin) 编写,所以不需要更改代码。...所有开发者: 下面简单介绍了为符合 64 位要求,您需要采取的步骤。如需详细了解此流程,请参阅我们的深入介绍文档。 检查您的 APK 或应用软件包是否使用原生代码。...您可以使用 APK 分析器检查 .so 文件,确定它们是由您自己的代码构建,还是由您使用的 SDK 或开发库中导入。
和jarsigner都是用于对Android APK文件进行签名的工具,但它们来自不同的项目,并且在一些细节上有所不同。...如果你在进行Android应用开发和发布,推荐使用apksigner,因为它支持Android APK签名的最新标准和要求。...命令的选项 **(必需)**指定您使用 Android Studio 构建的 app bundle 的路径。...如果您未指定签名信息,bundletool 会尝试使用调试密钥为 APK 签名。...它将名为my_app.apks的文件重命名为my_app.zip。这通常是因为.apks文件实际上是一个特殊格式的.zip文件,重命名后可以使用标准的解压工具来打开。
早期采用者已证实 App Bundle 比旧的 APK 应用尺寸减少了 11% - 64%。 另一个您不想错过的功能是 Energy Profiler (电量分析器)。...构建 Android App Bundle - Android App Bundle 是新的应用发布格式,旨在帮您向用户提供更小的 APK 并降低应用的下载大小。...Google Play 名为 Dynamic Delivery “动态交付” 的新应用服务模式会处理您的 App Bundle,针对每个用户的设备配置生成并服务优化后的 APK,从而让用户只需下载其需要的代码和资源就能运行您的应用...利用 Android Studio 3.2 或通过 命令行可以轻松将您的代码构建为一个 App Bundle,并根据语言、屏幕密度和 ABI 缩减 APK 大小,且应用代码不会改变。 ?...如果您正在使用旧的 Android Studio Canary 版,请确保更新到 Android Studio Canary 14 或更高版本。
导言 Android App Bundle 是 Android 新推出的一种官方发布格式,可让您以更高效的方式开发和发布应用。...一、项目背景 Android App Bundle 是 Android 新推出的一种官方发布格式,可让您以更高效的方式开发和发布应用。...随着版本快速迭代,Android 客户端迅速膨胀为超大型 App。...编译缓存 如官方的 build-cache,或国内模块化惯用的 .aar,或插件化使用的 .apk 等,都是通过配置版本管理、跳过编译任务。区别在缓存粒度和命中率不同。...三、全景图 研发模式 面向不同人群和场景,我们支持4种研发模式: 国内 app bundle 应用市场生态还不成熟,缺少应用渠道、只能使用插件化框架来弥补。我们仍沿用稳定的 .apk 发布方式。
文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 中上架 APK 文件 , 报如下错误 ; 您需要将 APK 文件缩减到 一〇〇 MB,或使用 APK 扩展文件。...您的应用目前的目标 API 级别为 28,但其目标 API 级别必须最低为 29,这样才能确保应用基于最新 API 而构建,让安全性和性能达到最佳状态。...二、解决方案 ---- 参考文档 : Google Play 管理中心帮助文档 使用 App Bundle 资源管理器检查应用版本 添加或测试 APK 扩展文件 Play Feature Delivery...概览 Play Asset Delivery 添加或测试 APK 扩展文件 Google Play 中 , 2021 年 8 月 之后 , 新应用需要使用 Android App Bundle 发布应用..., Play Asset Delivery ) 功能 ; 应用编译目标版本 : 以最新的 Android 版本作为应用编译的目标版本 ;
热更新原理 React Native的热更新并不像原生应用更新那么复杂,React Native的热更新更像原生App的版本更新。用一个流程图表示的话如下: ?.../gradlew assembleRelease,你就可以在android/app/build/outputs/apk/app-release.apk中找到你的应用包。...然后使用如下命令,即可上传apk以供后续版本比对之用。...pushy uploadApk android/app/build/outputs/apk/app-release.apk 发布热更新版本 你可以尝试修改一行代码(譬如将版本一修改为版本二),然后生成新的热更新版本...混合app热更新 jsbundle 拆分 对 React Native 的代码打包编译后会生成一个 bundle 文件,这里要说明一下, jsbundle 的拆分是基于生成的 bundle 文件可以看成两部分构成
上图是解压之后apk的内部细节,发现通过官方推荐的方式打包的apk多了两个文件“index.android.bundle”与“index.android.bundle.meta”,打开“index.android.bundle...结论 在开发环境下,为方便调试,APP会在启动时从JS Server服务器将index.android.bundle文件加载到APP。...签名打包后的APP变成了生产环境,此时APP会默认从本地加载 index.android.bundle文件,由于通过Android Studio打包的APK没有将index.android.bundle...通过官方推荐的方式签名打包APK 第一步:生成Android签名证书 如果你已经有签名证书可以绕过此步骤。...签名APK需要一个证书用于为APP签名,生成签名证书可以Android Studio以可视化的方式生成,也可以使用终端采用命令行的方式生成,需要的可以自行Google这里不再敖述。
安装包监控 Android Studio 的 APK Analyser 这是 Android Studio 提供的一个 APK 检测工具,通过它可以查看一个 apk 文件内部各项内容所占的大小,并且按照大小排序显示...启用压缩、混淆和优化功能 当你使用 Android Studio 3.4 或 Android Gradle 插件 3.4.0 及更高版本时,R8 是默认编译器,用于将项目的 Java 字节码转换为在 Android...不过,当您使用 Android Studio 创建新项目时,缩减、混淆处理和代码优化功能默认处于停用状态。...三方库优化 在 App 中会引入各种三方的"轮子",但是在引入之前最好权衡一下是否需要将其代码全部引入,造成不必要的代码或者资源也被打包到 APK 中。...关于 App Bundle 这个功能就跟ios一样了,他们就是将所有资源全部打到项目中,然后App Store,根据安装设备的属性,来选取相应资源打包进行下载。
要求 ComPDFKit PDF SDK 在运行 API 级别 19 或更高版本,或者面向最新稳定的Android 4.4 或更高版本的 Android 设备上受支持。...项目规格 minSdkVersion 为 19或更高 compileSdkVersion 为 30或更高 targetSdkVersion 为 30或更高 Android ABI(s): x86,...通过以下步骤,您将获得一个简单的应用程序,可以显示指定PDF文件的内容。 步骤 1: 创建一个新项目 使用 Android Studio 创建一个 Phone & Tablet 项目...."/> 注意: 对于面向Android 6.0或更高版本的应用程序,请确保在运行时检查并请求外部存储的读写权限。...图片 在您的包下创建一个新的 Empty Activity , 并将该Activity的名称设置为 MainActivity.
领取专属 10元无门槛券
手把手带您无忧上云