构建 App Bundle 大多数应用项目都不需要花费太多精力来构建支持动态交付的应用束。...方便强大的 bundletool Bundletool 是一个用于处理 Android App Bundle 的命令行工具。...使用 bundletool,您可以构建 Android App Bundle,提取连接的设备配置,生成 APK Set 文件 (.apks),从 APK Set 文件中提取或安装 APK,以及验证应用束...使用 bundletool help 获取有关命令的详细信息,例如标识符和其他选项。 在以下示例中,我们将找到已连接设备的配置,构建 APK,并为连接的设备安装 APK。 ?...动态功能模块 动态功能模块让您可以将特定的功能移动到单独的模块中。我们使用了动态交付技术,根据需要向用户提供这些功能。动态功能模块需要您的仔细考量,以及付出一些工作量进行实际的拆分。
/gradlew app:bundleDebug 使用命令行的编译方式也同样支持。 在蓝盾上自动集成构建的时候,无法使用可视化操作的方式,只能使用命令行的方式。...命令行构建更加的灵活,可以在启动构建的时候,通过参数来控制构建脚本 测试.aab文件 不论通过那种方式编译出的.aab文件,我们都会进行基本的验证。...bundletool 本地命令行工具 2、将 App Bundle 生成 一组apk文件 //app bundle 为应用支持的所有设备配置生成一组 APK java -jar bundletool...tips: 3.1: Android 5.0(API 级别 21)或更高版本,bundletool 会推送在该设备上运行您的应用所需的基础 APK、动态功能 APK 和配置 APK 3.2: Android...Bundle 简介 bundletool使用
概述 Android App Bundle是Google最新推出的Apk动态打包,动态组件化的技术,与Instant App不同,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积...当你是3.2以上的studio时候,就可以选择build bundle,来构建app bundle的文件 构建出来就是一个.aab文件 4.通过bundletool工具来测试你的....aab文件 下载地址:https://github.com/google/bundletool 解压出来就是一个jar包,以bundletool-all-0.6.0.jar为例子 bundletool-all...Enable on-demand: 是否启用按需下载,如果不启用,会直接打进Apk Fusing:熔断操作,是否安装到不支持按需下载的设备中 Module title: 模块标题 对于动态组件的一些使用场景...语言包的动态下发 当Split 针对语言进行划分时候,用户下载的Apk仅仅只能下载下来一个Base Apk,包含他的当前系统语言,你可以将其他语言包作为Dynamic feature下发给用户,做到语言包的动态下发
但在这种情况下,应用开发者便承受太多:不仅要开发应用,还要管理许多 APK 以支持大量设备。 因此为了省时省力,大多数开发者都会选择构建一个通用 APK,即包含语言包、代码等在内的所有资源。...不论用户身处何处、使用何种规格的设备,只需下载这个通用 APK 即可,这就造成APK包大的问题。...给予这一机制,很多公司在最近两年都用它实现了插件化和动态化下发的功能,参考文档:Android App Bundle。...其次,AAB 的 Play Feature Delivery 功能可自定义将哪些功能模块交付给哪个设备,支持安装时交付、按条件交付和按需交付等三种模式。...为此,谷歌已经开发了一个名为 bundletool 的开源工具,允许开发人员从 AAB 包中创建 APK,因此想在第三方商店中发布 Android 应用程序的开发人员可以手动导出其应用的 APK 版本。
概述 在 上一篇文章 中,您已经学会了如何在多模块工程中使用导航 (Navigation)。在本文中,我们将更进一步,将咖啡模块转换成功能模块 (Feature Module)。...如果对功能模块不太熟悉,您可以先查看这个 视频 内容。 功能模块在安装时并未下载到本地,而是当应用使用到某个功能时才会下载相应的功能模块。...现在我将使用 bundletool 来测试功能模块,您也可以使用 Play 控制台来测试功能模块。...如果您想了解更多关于如何使用 bundletool 和 Play 控制台来测试功能模块安装的内容,请查看这个 视频。 我也想测试当模块无法安装时会发生什么。...△ 自定义 progressFragment 类似地,我可以使用 bundletool 测试应用以查看当咖啡模块正在下载时,进度条会如何工作。 小结 感谢大家!
%JAVA_HOME%\bin %JAVA_HOME%\jre\bin 验证Java环境 打开cmd命令行窗口,使用如下两个命令进行验证。...jadx命令行的使用 地址: https://github.com/skylot/jadx 参数: jadx[-gui] [options] (.apk, .dex, ....bundletool bundletool 是 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 的底层工具。...命令的选项 **(必需)**指定您使用 Android Studio 构建的 app bundle 的路径。...如果您未指定签名信息,bundletool 会尝试使用调试密钥为 APK 签名。
引言 相信对使用 mac 的小伙伴来说,命令行肯定是必不可少的一个基操。但是开发中有些命令行贼长,比如当你要安装一个 aab 时,这个步骤很是麻烦,于是乎有没有一种更简单的方式呢?...具体见自动操作使用手册 常见场景 双击安装apk on run {input, parameters} tell application "Terminal" set thePath to POSIX...… 配置教程 以双击安装Apk为例子: command+空格 搜索自动操作,进入后选应用程序,然后选取。...; ok,即可实现双击安装apk 到设备。...而不是面对这些东西,脑子里只有一个想法,这玩意我用命令行两下就解决了啊
本文主要介绍官方方案的实现细节,探索在国内环境下使用Deferred Components,并且实现了最小验证demo。读罢本文,你就可以实现Dart文件级别代码的动态下发。...此时,gen_snapshot不会立即去编译app,而是先运行一个验证程序,目的是验证此工程是否符合动态下发dart代码的格式,第一次构建时肯定不会成功,你只需要按照编译提示去修改即可。...安装完成后会逐层通知,最终告诉dart层,在下一帧渲染时展示动态下发的控件。...apk的逻辑。...在国内使用的可行性。
第二种是:基于Instrumention,把测试APK和被测APK运行在同一个进程中,通过Java反射机制来获取当前窗口的所有视图,如Robotium常用的测试工具有:UI Automator、Appium...12 安装配置AppiumAppium官网:图片点击左侧的install Appium使用NPM安装:npm i --location=global appium命令行输入appium即可:C:\Windows...GUI界面去安装appium-desktop;图片选择的对应包即可:图片这里需要注意下,官网给出了明确说明,appium-desktop将不再支持Appium 2.0+版本,建议使用命令行方式,图片13...npm i -g mjpeg-consumer安装即可;排查也是ok了:图片14.5 bundletool.jar问题第五个问题:bundletool.jar cannot be found下载安装bundletool.jar...,bundletool.jar下载:图片下载后为bundletool-all-1.15.6.jar重新命名为bundletool.jar,在android sdk目录下,新建bundle-tools目录
使用 app bundle 并不需要改变现有的代码库。 您只需要通过命令行或者 Android Studio 即可构建一个 Android App Bundle。...通过命令行构建 如果使用命令行,您需要像下面这样运行其中一个 bundle 任务: ....每一个功能模块或者不同配置的 apk 文件包含了其对应的资源及代码,而 base 模块会将所有的这些模块集成到一起。...即便如此,使用 Android App Bundle 还可以提供给您按需加载功能模块的方法,而这一方法可以帮助您的应用避免安装那些只有一小部分用户可能使用的功能模块。...为了让您可以通过编程的方式下载和安装功能模块,我们还提供了分拆的 API 以方便您使用。
开发者也不需要为了支持多种设备而构建、发布和管理多个 APK 了。 7....减小 APK 大小 Android 应用包使用的 APK 拆分机制可以缩减应用的大小,并支持 Android 应用程序的动态交付等新功能。 8....动态功能模块 此功能允许开发者将某些功能和资源与应用程序的基础模块分离开来,并将前者添加到应用程序包中。 例如,如果你的应用包含相机功能,则可以将其设为动态模块。...还有的工具允许用户从命令行和 Dart DevTools 构建应用以进行调试。 此外,它还允许开发者查看日志、调试应用,并检查 Flutter 应用开发的小部件。...Watermaniac 已决定使用 Flutter 构建其应用。该应用能帮助用户监控他们摄取的水量。 ? 07 构建 Flutter 应用的成本 构建应用当然需要花费时间和资源。
当您构建 app bundle 时,Gradle 会使用子项目名称的最后一个元素在功能模块的清单中注入 属性。 指定该模块的 package name。...默认情况下,Android Studio 不会使用 app bundle 部署您的应用,而是由 IDE 构建针对部署速度(而非 APK 大小)进行了优化的 APK,并将其安装到设备中。...如需将 Android Studio 配置为通过 app bundle 构建和部署 APK 以及免安装体验,请修改运行/调试配置。...免安装分发 还有一种动态功能模块,即免安装分发。Google Play 免安装体验让用户无需在设备上安装 APK 即可与您的应用互动。...但是动态功能模块(尤其按需分发)一定要设计好,否则用户在使用过程中还要频繁的下载模块也会降低用户体验。
第 2 步:当您准备好测试或发布应用时,您可以将其构建为 APK,也就是 Android 的应用格式。作为构建 APK 的一部分,您可以使用应用签名密钥对其进行数字签名。...使用动态功能也是在 Android 上动态加载代码的安全做法,因为动态功能模块的扫描和检查方式与 Google Play Protect 扫描和检查应用本身的方式相同。 ?...任何应用功能都可以包含在动态功能模块中,并按需提供。您可以像编写应用一样对动态功能进行编码。...一些开发者还在探索动态功能,避免为仅仅是略有不同的用户群体提供为数过多的不同应用变体。 很少使用的功能:动态功能模块的另一个用武之地是,用于那些很少使用或仅使用一次的功能。...使用动态功能模块逐步加载功能是大幅减少应用体积的众多方法之一。10MB 的大小限制仅适用于将启用了免安装功能的应用束推送到生产环境的时候,所以在此之前您可以在超出大小限制的情况下对其进行测试。
全面了解 Play App Signing 通过与 Wojtek 一起使用 Play 管理中心,您可了解如何选择使用 Play App Signing。...构建您的第一个 app bundle 现在该了解如何构建和上传您的第一个 Android App Bundle 了。...在这个 视频 中,我会介绍使用 Android Studio 和命令行界面构建 app bundle 的过程。 您也可以阅读 本期内容的文字整理版。...使用 bundletool 和 Play 管理中心测试 app bundle 想知道如何测试 app bundle 吗?不用再费劲猜测了。...如果您想下载 bundletool,请前往 相关文档。
存储空间:手机设备的存储空间是有限的,用户不希望一个应用占用大部分存储空间。 下载速度:大型APK文件需要更长时间来下载,尤其是在慢速网络条件下。...资源分析工具:使用资源分析工具,如AndroGuard来识别未使用的资源文件。 分包和动态交付 Android应用支持分包和动态交付功能,这意味着应用可以根据需要下载额外的功能模块。...这有助于将APK文件的初始大小保持较小。 动态交付:将应用的功能模块划分为可下载的模块。根据用户需求,只下载所需的模块,减小初始APK的大小。...应用捆绑:使用Android App Bundles格式(.aab)来构建应用,Google Play会根据用户设备和语言等因素生成定制的APK文件。...结论 APK瘦身是Android应用开发中的关键任务,可以提高应用的性能和用户体验。从资源优化、代码优化、清理无用资源到分包和动态交付,以及资源替代和密度限制,都是APK瘦身的不同层面。
在Alpine Linux中使用apk命令获取已安装包列表 Apk是 Alpine Package Manager 的缩写,是 Alpine Linux 的默认包管理器。...如下命令: $ apk info | wc -l 86 在 Debian、Ubuntu 中使用 apt 命令查找已安装的包 Apt为 Debian、Ubuntu 和其他基于 Debian 的系统中的包管理系统提供了高级命令行界面...dpkg 命令 dpkg是一个用于安装、构建、删除和管理 Debian 软件包的命令行工具。...要使用 列出 openSUSE 中已安装的软件包zypper,请运行: $ zypper se --installed-only 使用rpm命令 RPM命令,是用来安装和管理基于红帽系统从命令行应用程序...Flatpak是一个独立于平台的包管理系统,用于在 Linux 上构建、安装和运行沙盒桌面应用程序和运行时。
功能模块的行为与库相似,它们都将代码和资源提供给编译的最后阶段,在应用程序模块中这些都发生在将所有东西打包成一个 APK 之前。...在这种情况下,ProGuard(混淆)能够分析你的整个代码库,找出哪些类被使用,哪些可以被安全地删除。 **在即时应用程序构建中,每个功能模块都会生成自己的 APK。...**因此,与可安装的应用程序构建相反,ProGuard(混淆)可以独立运行在每个功能模块的代码中。...在即时应用程序构建过程中,我们需要将 ProGuard(混淆)配置添加到所有功能模块,因为它们都会生成 APK。...有了关于 DEX 格式和命令行 APK 分析器(一个分析 APK 中 DEX 文件的工具)的一些知识,我们可以很容易地找到所选模块中哪些被使用了但没有定义的类。
chmod 644 /system/app/SDKLongRrs.apk pm安装apk卸载应用 pm install -r /system/app/SDKLongRrs.apk pm uninstall...:/ $ su root chmod -R 755 /data (R必须大写,linux命令区分大小写的,cmd命令不区分大小写,shell命令是一种linux命令) 点击这里查看chmod...官网参考 https://developer.android.com/studio/command-line/bundletool 工具下载https://github.com/google/bundletool.../releases 一条命令将aab安装到手机 java -jar C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\bundletool-all...v1\app105491-release.apks&java -jar C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\bundletool-all
尤其是使用动态获取的资源,可能会被移除掉。为了避免这种情况,我们可以在res/raw/目录下创建一个keep.xml文件,用来保持资源: <?...使用Daemon在短时间内构建是非常有用的。...我这也就意味着在IDE中第一次启动构建后,后续的构建都会比较快。如果你从命令行执行构建的话,Gradle Daemon则是关闭的,除非在Properties中启用。...不建议在Production版本中使用这两个工具。...使用ABI分割APK也是同样的,所有的属性都和density分割一样。
解决方法很简单,使用 Java的 keytool命令创建证书并在 Gradle构建文件的 signingConfigs块中使用就可以办到。下面让我们看看详细讨论。...本文选自《巧用Gradle构建Android应用》。 所有 Android包(APK)文件在部署之前都需要被数字签名,Android使用一个已有的密钥签发调试用的 APK。...你现在可以使用 jarsigner和 zipalign工具来为你的 APK签名了,但是让 Gradle来做会更容易。...幸运的是,你可以把它们放到 gradle.properties文件中,或者从命令行指定。...为了使用新的配置,添加一个 signingConfig属性到 release构建类型。 示例.
领取专属 10元无门槛券
手把手带您无忧上云