问题标签 [dynamic-feature-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
248 浏览

java - 如何获取 Android 动态模块中资源的标识符?

我正在研究动态模块功能交付,并且我在动态模块中也有一些可绘制的资源。我面临的问题是我无法获得资源的标识符,但是如果我直接引用它们中的任何一个,那么它工作得很好。因此,仅在尝试访问资源标识符时才会出现问题。目前我正在尝试这样做:

和这个

但是,当我直接访问可绘制对象时R.drawable.mydrawable,它可以工作。请指导我如何访问资源标识符,因为目前它每次都返回 0,这意味着它无法访问标识符。

0 投票
0 回答
317 浏览

android - Android导航动态功能模块深层链接不起作用

我正在使用具有单一活动结构和动态功能模块方法的喷气背包导航组件来分离应用程序模块。我现在不想按需制作模块,所以它们都将安装在安装基础应用程序模块上。在我的应用程序模块导航 XML 中,我有 4 个引用动态模块的包含动态部分:

模块的某些部分具有连接,例如在工具模块中它具有 QR 码功能,可以读取并导航到其他模块中的其他片段,因此我在第二个模块中创建了一个深度链接,以便使用 Navigation-Component 更轻松地进行导航NavManager

问题是如果我在从第一个模块调用深度链接之前没有进入第二个模块,它会导致应用程序崩溃,说找不到深度链接,但是当我进入第二个模块然后从第一个模块调用深度链接时,它会正常工作而没有任何问题。所以我认为应该触发一些东西来让导航理解动态模块深度链接。

我知道谷歌在以下链接(限制部分)的末尾提到动态模块尚不支持深度链接:

导航动态限制

所以我发现它在目标模块打开之前有效,然后从其他模块调用它的深度链接,并且在之前未打开时不起作用。

0 投票
1 回答
676 浏览

android - 带有动态功能指南的即时动态功能

我对 android 本身的动态即时应用程序文档设置指南感到困惑,因此非常感谢指导和链接:)

我从阅读文档中了解到的是实际的“应用程序”将转换为“基础”,创建另一个动态模块将是“应用程序”,并且对于即时动态模块也没有布局。这是我感到困惑的部分,如果没记错的话,假设我希望我的第二页显示为即时应用程序,应用程序链接需要分配给即时应用程序,我该如何分配它?你下一步怎么做?如果我错了,请纠正我的理解。

我的应用程序有 2 页,第二页将包含一个按钮,我根据文档所做的:

  1. 完成 =implementation "com.google.android.gms:play-services-instantapps:17.0.0"

  2. 完成 =android:targetSandboxVersion="2"

  3. 完成 =<dist:module dist:instant="true" />

  4. 完成 = `cleartextTrafficPermitted

  5. 在第二个活动中添加到 onCreate =

  6. 创建一个新的 Dynamic 模块并在 build.gradle 中自动添加

    一种)implementation project(":app")

    b)dynamicFeatures = [":installed_feature"]

  7. 已使用主机方案设置应用程序链接

  8. 创建即时动态功能模块

  9. 你下一步怎么做?

0 投票
1 回答
459 浏览

android - Android动态功能卡在安装视图虽然它说它已安装

我在我的应用程序中使用动态功能模块,这是我的App课程 -

这是我的MainActivity-

当我构建 apk 并在我的设备/模拟器上运行时,我看到永远存在的“安装模块”并且我看到了日志 -

这是我永远看到的屏幕-

在此处输入图像描述

我在做什么错误?

0 投票
0 回答
181 浏览

android - Android InstantApp 和 sharedUserId

我想为当前在 play store 上的一个应用程序创建一个即时应用程序。

为此,我制作了包含所有必要内容的动态功能模块,以实现即时体验。

主要问题是该字段android:sharedUserId是在主模块上定义的。

在测试我的工作时,我们在 logcat 上收到以下错误:

android.content.pm.PackageParser$PackageParserException:/data/app/vmdl143761699.tmp/base.apk(在二进制 XML 文件第 2 行):临时应用程序中不允许 sharedUserId

这意味着即时应用程序无法使用 sharedUserId 字段...

当我删除此字段时,我的即时应用程序运行良好,但我无法安装主应用程序或更新以前的安装版本,我收到此错误:

E/Finsky:[2] zdp.onReceive(15):安装 xx.xx.xxx.xxx 时出现错误 -505:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE:包 xx.xxx.xxxx.xxx 试图更改用户 null

好的,谷歌指定在没有应用程序重新安装的情况下无法删除此字段......(https://developer.android.com/guide/topics/manifest/manifest-element#uid

因此,只要我有 sharedUserId 字段并且我无法删除它,我就无法拥有即时应用程序......

我的问题有什么解决办法吗?

0 投票
2 回答
280 浏览

android - 如何从 Android 应用风格中排除动态功能?

我有这个项目结构:

  • 应用程序
  • 图书馆1
  • 动态特征1
  • 动态特征2

现在,我只想dynamicFeature2包含在我的开发版本中,并且永远不会出现在任何可以发布的东西中。

我像这样使用productFlavors

这样,我在public * 和development * 变体中都有这两个功能,但是如果我注释掉开发风格的dynamicFeatures行,我将只有两种风格。所以它有点工作,但不是我想要的方式。dynamicFeature1

那么,有没有办法让应用风格拥有不同的动态功能集?

0 投票
3 回答
805 浏览

android - 在 android 上重构为动态功能模块时,构建失败并显示“任务:features:catalog:createDebugCompatibleScreenManifests FAILED”

一旦我将动态功能模块引入我的应用程序,我就能够成功地重构功能一(订单)、构建和部署。但是在重构第二个模块时,即将文件和资源移动到该模块时,我在构建时收到此错误:

我尝试了以下修复:

  1. 使缓存无效
  2. 重新克隆项目
  3. 确保所有 gradle 文件都相同(applicationId位除外)
  4. 检查清单文件中没有错误
  5. 确认没有两个模块共享相同的应用程序 ID。
  6. 将项目重新设置为最后一个工作提交。

关于导致此构建问题的任何指示?

其他信息:我正在使用 koin 的依赖注入。

应用程序/主模块manifest.xml

应用程序/主模块build.gradle

功能模块一(订单)manifest.xml

功能1(订单)build.gradle

0 投票
1 回答
142 浏览

android - Android DFM 动态 FeatureModule 资源 NotFoundException

在我们的应用程序中,我们开始使用动态功能模块 (DFM) 来获取大量资源。我们将大部分可绘制对象移动到 DFM 并在需要时加载它们。

用于使用提供者和应用程序上下文加载可绘制对象(如文档中所示),并且仅在加载 dfm 时才有效

DFM.getDrawableResID(m_drawableName) - 从模块返回资源 ID (DrawableRes)

在 Application 类中重写 attachBaseContext

在主模块 attachBaseContext 的 MainActivity 中也被覆盖

下载模块有效,下载后列表中有一个drawable。但是在应用程序重启后总是 -

模块安装和文件列表从模块中获取没有问题......

0 投票
0 回答
162 浏览

android - 如何使用模块和动态功能运行 UI 测试

我目前正在玩动态功能。我无法运行任何 UI 测试。

我的应用程序有三个模块,如图所示:

在此处输入图像描述

  • app - 常用模块
  • dynamicFeatureA - 动态特征模块。它必须取决于app。这是实现动态功能时的要求
  • shared - 一个包含一些共享逻辑和 3rd 方库的模块。我所有的测试/模拟库也在这里

在下面,您将找到每个模块的build.gradle文件。

应用程序

共享

动态特征A

尝试运行我的 UI 测试时,出现以下错误

0 投票
1 回答
567 浏览

android - 即时应用程序,立即尝试按钮不会出现在 Play 商店中

我从以下 github 项目开始,但这些示例无法正常工作。我添加了文档中所述的缺失部分。 https://github.com/android/app-bundle-samples/tree/main/InstantApps/urlless https://github.com/googlecodelabs/android-dynamic-features

这是我阅读的文档。 https://developer.android.com/topic/google-play-instant/getting-started/instant-enabled-app-bundle https://developer.android.com/topic/google-play-instant/feature-module -迁移 https://developer.android.com/guide/app-bundle/instant-delivery

我尝试实现一个简单的 hello world 即时应用程序。我尝试了很多东西,但现在尝试按钮从未出现在 Play 商店中。

我的应用程序包含 2 个模块:

  • 应用程序
  • 即时应用

app 模块的 build.gradle :

我的即时应用模块的 build.gradle

我的应用模块的 AndroidManifest.xml

我的即时应用模块的 AndroidManifest.xml

我生成了一个签名包,并在每次尝试中将其上传到内部测试中,但它不起作用。我也在产品环境中尝试过。不行!

我试图将 applicationId "com.test.myapp" 放在应用程序模块和即时应用程序模块中。我尝试制作 android:targetSandboxVersion="2" 和 android:targetSandboxVersion="1"。不行 。我的应用程序的版本代码大于我的免安装应用程序的版本代码,如下所示。

我删除了 clearTextTraffic 并添加了。不行!

有人说我将启用即时应用程序的代码投入生产并上传新的升级即时应用程序版本。我做到了,它也没有工作。

我尝试了许多我现在不记得的组合。但是现在尝试按钮永远不会出现。我找不到的缺失部分是什么?

关于 Instant-app 模块的最大大小有 3 种不同的说法:

  • 4 MB
  • 10 兆
  • 15 mb 为什么源代码和文档冲突太多,而且 github 中没有工作代码?如果我在 Play 商店中没有看到工作样本,我会认为即时应用程序已经死了。