问题标签 [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 回答
189 浏览

android-instant-apps - 如何在多模块动态特性应用程序中进行通信

我有像这样的项目结构

应用程序 :

即时应用:

图书馆:

动态特征1:

动态特征2:

动态特征3:

现在动态特性1和动态特性2之间存在一些依赖关系。现在,如果我将它作为依赖项添加到 dynamic-feature2 build.gradle 中,那么它将导致循环依赖。以上只是一个例子,还有很多其他情况。如何正确处理此类依赖冲突或任何建议?

0 投票
1 回答
231 浏览

android-workmanager - WorkManager 无法在动态模块中注入刀柄

当我在常规模块中使用 WorkManager + Hilt 时,该应用程序运行良好。但是,当我在动态模块中使用时,遇到以下问题

0 投票
1 回答
755 浏览

android - Dagger/Hilt 2.32-alpha Hilt Jetpack 1.0.0-alpha03 + Dynamic Feature + ViewModel + SavedStateHandle 和 dagger.assisted.AssistedInject

我创建了一个示例项目来使用具有动态功能和 ViewModel 的 Dagger/Hilt,一切都很好,Dagger/Hilt 2.29.1-alpha您可以在此处Hilt Jetpack 1.0.0-alpha02查看源代码。现在 Dagger/Hilt 的新版本在这里,您可以在此处查看源代码。在模块中,我创建了以下类作为通用视图模型工厂Dagger/Hilt 2.32-alpha Hilt Jetpack 1.0.0-alpha03app

FragmentViewModelModule模块中的类app提供视图模型工厂

AppDependencies模型中的类以app通过动态功能模块(即home动态功能模块)公开所需的依赖关系

然后在home动态功能模块中,我创建了HomeComponent类来注入HomeFragment

HomeModule提供home模块依赖项的类

HomeViewModel班级

最后是HomeFragment课堂

由于以下错误,我无法构建项目,我不知道出了什么问题以及如何修复它。另外,我检查了hilt-multi-module 文档

0 投票
1 回答
428 浏览

android - Android 动态功能:错误 -2 模块不可用

我一直在调试一整天都没有结果,我已经关注了每个文档和谷歌代码实验室并将捆绑包上传到内部测试并且错误仍然存​​在:模块不可用,下面是我的实现:

模块 AndroidManifest.xml

模块 build.gradle:

并且该模块具有片段以及它们的一些依赖项。

在基础应用 Android Manifest 中:

我添加了这个

我在 build.gradle 中的应用程序 ID 是:com.appshive.ecommerce

我的应用程序类扩展了 SplitCompatApplication

我在所有项目中只有一项活动:主要活动,它包含

在 onCreate 我初始化它: manager = SplitInstallManagerFactory.create(this)

我正在检查模块是否可用我正在打开其他片段:

我正在向经理注册听众:

就是这样,然后我使用我的密钥生成签名包并将其上传到内部测试,然后我将它安装在我的手机上,然后发生错误:错误 -2 模块不可用

我已经尝试了互联网上的所有方法,但没有运气我不知道我错过了什么。是因为捆绑签名还是因为打包?

当我更改模块以安装时间模块时,它就像一个魅力。

0 投票
0 回答
449 浏览

android - 数据绑定在动态功能模块中不起作用,在引用绑定的视图时导致空指针异常

我有一个名为favorite. 该模块具有安装时交付。在这个模块中,我使用数据绑定。但是,当我想访问视图的 ID 时,它说该视图为空。

看看favorite我正在使用的模块中的 XML 布局。

如您所见,那里有两个视图,它们具有各自的 ID。然后,我想在我的favorite模块片段中引用这些视图。我是这样做的。

如上所示,我正在使用 ViewPager 引用binding.fragFavoriteViewPager。在构建期间,没有错误。但是,在运行时,当我尝试导航到 thisFavoriteFragment时,它会返回一个空指针异常错误。该错误告诉我这binding.fragFavoriteViewPager是一个空对象引用。完整的错误可以在下面看到。

我已经为该favorite模块设置了我的 Gradle 文件,就像这样。

要导航到该动态功能片段,在我的另一个名为 的模块中app,我有这个导航图。

我根据Android 的关于动态导航的文档对导航图进行了更改。然后我删除了与调用binding.AnyView和使用 Layout Inspector 相关的所有代码。事实证明,所有视图都不再具有任何 ID。请看下面这张图片。

在此处输入图像描述

为什么 ID 在 Layout Inspector 中消失了?我该怎么做才能使用片段文件中的数据绑定来引用视图?

编辑

使用binding.root.findViewById,我可以访问视图。这很奇怪。

0 投票
1 回答
163 浏览

android - 执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障太多条目 (66530)

启用 minify 并出现此错误时,动态功能模块的 Gradle 构建失败

如果禁用缩小它,它工作正常..

0 投票
1 回答
2443 浏览

android - 如果没有 @Provides-annotated 方法,就无法提供。公共抽象静态类 ApplicationC 实现 MyApplication_GeneratedInjector,

我使用匕首制作了一个项目,当我制作一个动态功能时,它会显示这样的错误

我真的不知道错误是什么意思。我试图删除@singeton,但仍然出现了那个错误。

我已经像这段代码一样制作了匕首柄所需的一切

和这个

但匕首仍然没有在我的这个活动代码中生成它

还是红色的DaggerFullTimeComponent,我不知道该怎么办。如果有人知道,请帮忙。谢谢你。

如果您需要了解全部内容,这是我的完整项目:https ://github.com/cube76/JobWishlist3

0 投票
1 回答
493 浏览

android - 如何将 Android Dynamic Feature 模块中的存储库注入/提供到 App 模块中

我正在调查我当前的 Android 应用程序中的动态功能模块。

我的应用程序由一个应用模块、多个静态模块和一个动态功能模块组成。

我试图将在动态功能模块中声明的存储库类注入到我的一个静态模块中的存储库类中。

我有一个通用共享模块,其中包含一个定义 API 的接口

我的动态功能模块有一个类似于这样的存储库类:-

我有另一个使用上述动态功能模块存储库的静态模块

我相信 Dagger 子组件将允许我将此动态功能模块存储库注入到我的静态模块类中,但是我看不到如何实现这一点。

到目前为止,我在公共模块中声明了以下 Dagger 类:-

在我的动态功能模块中,我有这个 Dagger 类:-

在我的静态模块中,我有这个@Inject

我的应用程序构建并运行,但是@Inject我的静态模块中的内容不满意,因为我的应用程序失败了

我哪里出错了?

我如何为我的一个静态模块@Provide 我的动态功能模块存储库

以下是我的静态模块中的“注射部位”:-

Android 文档中,有这个突出显示的注意事项:-

注意:只要您想创建 ApplicationComponent 的子组件,就会出现此问题。如果您需要创建一个依赖于某个特性模块的常规 gradle 模块,并且需要创建一个依赖于该特性模块中定义的组件的组件,则可以照常使用子组件。

我的情况不就是这样吗?我的静态模块需要/依赖于我的动态功能模块中定义的组件。这个评论让我相信我可以使用 Dagger 子组件来解决我的问题。如果这是真的“如何”使用子组件将我的 DFM 存储库注入到我的静态模块存储库中?

更新

我已将此添加@EntryPoint到我的 App 模块中:-

这将允许我在我的目标存储库中使用它

我遇到的问题是如何“ Provide”从我的 DFM 中执行 MyExperimentable

在我的 DFM 中,我尝试过这个:-

但是我在构建时遇到了这个异常:-

能够将我的 DFM 存储库实例提供到我的应用程序中,我缺少什么?

更新的解决方案

我设法使用 Dagger 实现了预期的结果,并将我的解决方案基于此示例 我不喜欢的方面是这采用了反射

0 投票
1 回答
871 浏览

java - Android 拆分安装错误(-2):Module_Unavailable 错误

我正在尝试在我的 android 应用程序中实现按需交付功能。现在我正在研究示例以了解它是如何工作的,但是当我尝试安装动态模块时,它显示一条错误消息“拆分安装错误(-2):请求的模块不可用(对于此用户/设备,对于已安装apk)。(https://developer.android.com/reference/com/google/android/play/core/splitinstall/model/SplitInstallErrorCode.html#MODULE_UNAVAILABLE)“

我看过很多例子,也遵循了谷歌的拆分安装文档,我也看到了很多 StackOverflow 问题/答案,但我找不到任何解决方案。

我的代码

MainActivity.java(基础应用程序):

AndroidManifest(基础应用程序):

Gradle(基础应用程序):

DynamicActivity.java(动态特征):

AndoridManifest(动态功能):

Gradle(动态功能):

我的 Google Play 开发者控制台 App Bundle 参考

我已将运行配置编辑为“来自应用程序包的 Apk”,并且我正在通过内部测试轨道测试应用程序,但它无法正常工作。

0 投票
2 回答
192 浏览

android - 如何通过 Android Studio 为动态功能模块执行 UI 测试?

我有一个常规:app模块和一个 DFM :feature

我将 DFM 的测试androidTest放在里面的源集中:feature

当我尝试使用 Android Studio 创建的运行配置启动测试时,它会以Test framework quit unexpectedly.

如果我使用 Android Studio 在选项卡中显示的命令通过终端启动测试,Run我将看到:

这并不奇怪,因为通往跑步者的道路是不同的:

如果我在命令行上使用该工具,则测试有效。

有没有办法教 Android Studio 做到这一点?