android - 默认情况下未安装按需功能模块
问题描述
我们有一个名为replay
. 我们开始将此作为安装时模块:
<dist:module
dist:instant="false"
dist:title="@string/title_replay">
<dist:delivery>
<dist:install-time />
</dist:delivery>
<dist:fusing dist:include="true" />
</dist:module>
当我们在本地安装应用程序时:
$ ./gradlew app:installDebug --info
我们看到安装了基本应用程序和动态模块:
Generating APKs for device 'Pixel 3a - 10' for app:debug
The APKs have been extracted in the directory: /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259
Installing APKs 'base-xxhdpi.apk, base-master_2.apk, base-en.apk, base-arm64_v8a_2.apk, replay-xxhdpi.apk, replay-master.apk' on 'Pixel 3a - 10' for app:debug
[SplitApkInstallerBase]: Created install session 1842207670 with options -r -t -S 12108428
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/base-xxhdpi.apk to session 1842207670
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/base-master_2.apk to session 1842207670
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/base-en.apk to session 1842207670
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/base-arm64_v8a_2.apk to session 1842207670
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/replay-xxhdpi.apk to session 1842207670
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect7963605990779726259/replay-master.apk to session 1842207670
Installed on 1 device.
Task :app:installDebug in app Finished
但是,当我们更改为按需时:
<dist:module
dist:instant="false"
dist:title="@string/title_replay">
<dist:delivery>
<dist:on-demand /> THIS IS THE ONLY CHANGE
</dist:delivery>
<dist:fusing dist:include="true" />
</dist:module>
安装不再安装动态 apk:
$ ./gradlew app:installDebug --info
Generating APKs for device 'Pixel 3a - 10' for app:debug
The APKs have been extracted in the directory: /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect788484471691589897
Installing APKs 'base-xxhdpi.apk, base-master_2.apk, base-en.apk, base-arm64_v8a_2.apk' on 'Pixel 3a - 10' for app:debug
[SplitApkInstallerBase]: Created install session 745896174 with options -r -t -S 12031951
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect788484471691589897/base-xxhdpi.apk to session 745896174
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect788484471691589897/base-master_2.apk to session 745896174
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect788484471691589897/base-en.apk to session 745896174
[SplitApkInstaller]: Uploading APK /var/folders/1g/mz8f0hgd0dg8ghy3pd_0llxm0000gn/T/apkSelect788484471691589897/base-arm64_v8a_2.apk to session 745896174
Installed on 1 device.
在开发过程中,我们应该如何在本地执行此操作?我们必须使用bundletool
来生成通用apk吗?我认为 Android 插件足够聪明,可以为我们完成所有这些工作。
解决方案
(Currently) in Android Studio, it only pre-installs the dynamic feature module (as selected in the modules dialog), when selecting "Default APK" instead of "APK from app bundle" for deployment, which might be caused by this issue .
推荐阅读
- android - 单击onBackPressed按钮后AppBarLayout无法显示
- python-3.x - 如何解决 workon:commnad not found for virtualenv?
- html - ngAfterViewInit 更改时,Angular 不会将值更新为 View
- ios - 当嵌套的 UITextView 开始编辑时,UICollectionView 跳转/滚动
- javascript - dataframe.js - 是否可以对分组数据框中的多列求和?
- http - 不带路径的 curl CONNECT 方法(改为目标主机名和端口)
- visual-studio-code - 企业防火墙后面的 VSCode,扩展显示“安装失败”
- jenkins - Jenkins TestComplete 从 Jira 获取测试执行 ID
- asp.net-web-api - 检测到与 ASP.NET SignalR 服务器的连接尝试
- javascript - 如何在Javascript的Script Tag中动态访问JSP的forEach标签值。?