问题标签 [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.
android - 使用 DynamicFeatureModules 时无法将 ContributesAndroidInjector 与 Fragments 一起使用
我一直在尝试使用 ContributesAndroidInjctor 为我的片段注入依赖项,而不是创建子组件,但它会引发异常,
java.lang.IllegalArgumentException: No injector factory bound for Class<LoginFragment>
这是我想要做的,
零件:
模块:
分段:
LoginFeatureImpl:
我的Activity基本上调用LoginFeatureImpl中的注入方法:
对此问题的任何帮助表示赞赏。
编辑: 如果我手动创建一个子组件而不是依赖 ContributesAndroidInjector 并在我的实现 HasAndroidInjector 而不是从 DaggerFragment() 扩展的片段中调用注入,它将起作用。但我仍在寻找一种使用 ContributesAndroidInjector 的解决方案,而不是为我添加的所有片段手动创建子组件。
android - 启用了 proguard 的主应用程序的 Android 动态功能访问片段
我有一个动态功能。当我启用 proguard 并尝试访问片段时
错误:
如果我尝试禁用 proguard 它可以工作。
我尝试将类片段保持在动态功能中,但它不起作用。
我怎样才能达到动态特征片段?谢谢
android - Android 中的 OnDemand 功能下载 SDK 大于 20MB?
我正在开发一个项目,我需要一个仅在特定情况下大小为 20MB 的 SDK。我的意思是使用率仍然很低,但由于我包含该 aar 文件,因此我的应用程序大小变得越来越大。
有没有办法使用它或仅在需要时才下载 SDK?
我完成了动态功能模块交付,但找不到使用 SDK 的方法。甚至有可能做到吗?
请帮助解决如何实现这一目标。
android - 如何使用功能代码管理应用程序更新时的代码动态功能模块?
我正在研究android中的动态功能模块。但是当我更新代码库或更改功能模块中的代码库时,我找不到任何东西。
如何处理代码库,当检查 getInstalledModules() 方法时返回它已安装但未安装。有没有办法检查功能代码中是否有任何更新?如果没有,那怎么办?
android - 如何处理嵌套 NavHostFragments 中的返回事件?
我确实查看了官方网站Nested Graph并搜索了相关问题,但没有运气。
当嵌套图和动态特征模块出现时,我尝试将“动态特征模块”、“嵌套 NavHostFragments”和“嵌套图”组合成一个单独的模块。但是当我尝试处理后退按钮事件时,我对此一无所知。
我在“应用程序”模块中有 NavHostFragments,当用户在底部导航视图中导航帐户项目时。它将提示一个底部对话框,其中包含一个嵌套的 NavHostFragment 及其导航图。这些片段位于“帐户”模块中。
当我尝试通过按帐户页面中的后退按钮进行导航时,它不会返回嵌套的 NavHostFragment 内的堆栈。这个setPrimaryNavigationFragment()
函数似乎为这个问题提供了一些线索,但我没有运气。
这就是现在的行为
MainActivity.kt(在“app”模块中)
activity_main.xml
AccountListDialogFragment.kt(在“帐户”模块中)
片段帐户.xml
android - 在动态功能模块中获取资产存储位置
我正在研究动态功能模块,我将sqlte.zip
文件放在feature->res->database->sqlte.zip
.
在我的基本应用程序模块中,我希望在sqlte.zip
下载 zip 后将数据库路径作为字符串路径。正在下载,但我无法访问该 zip 文件?
有没有办法访问该文件或者我应该将 sqlte.zip 放在其他文件夹结构中吗?
我当前的文件夹结构:
请帮忙!
android - 如何使用带有第二个导航图的动态加载模块在 Android 中执行底部导航
我正在尝试将导航组件与动态功能模块一起用于当前正在运行的应用程序。最近,我配置了主导航图,用于加载欢迎屏幕和主屏幕之间的导航。
当呈现主屏幕(在主导航图中定义)时,动态功能模块中的片段是动态的使用 BottomNavigationView 加载并显示在布局中,但是,作为包含的导航图,包含的导航图中的目的地/动作不会在 HomeFragment 的 NavController 中执行或识别。
我的问题是:如何在主屏幕中成功加载动态功能模块导航图,以确保安装时应用程序中包含的模块的导航流程?
当说“确保包含模块的导航流程”时,我指的是包含的导航图及其目的地必须以与使用单个导航图时的正常导航设置相同的方式工作。
例如,我在主屏幕底部导航中选择了 Tab01,当显示时,会出现一个包含有关新闻提要的信息的列表,然后单击新闻项目,它会导航到新闻内容片段屏幕。
在这种情况下,会显示此错误:
我使用以下依赖项进行导航:
代码注释主屏幕/片段:
- 添加了第二个导航图,它使用
<include-dynamic... />
标签来加载动态功能模块。
[nav_graph_home.xml]
- 在 Home Fragment 的布局中为 BottomNavigationView Widget 配置了一个菜单 xml 文件,稍后,在布局中,我在 FragmentContainerView 中添加了 app:menu 和图形引用。
[fragment_home.xml]
- 在 HomeFragment 类中,我使用第二个导航图为 BottomNavigationView 的导航流程进行了设置。
[HomeFragment.kt]
android - 在动态功能模块中使用 Firebase 库
我正在尝试在动态功能模块中使用 FirebaseAuth,但我得到了:
我正在使用最新版本,我尝试使用较低版本但没有运气。
项目 build.gradle.kts:
应用程序 build.gradle.kts:
验证 build.gradle.kts:
有人遇到过这种情况么?或者我在这里错过了什么?
java - 在多模块项目中访问绑定适配器
我有一个多模块项目,其中 app 模块包含我的绑定适配器,而我的功能模块取决于我的 app 模块,因为它是一个动态功能模块。
应用程序(包含绑定适配器)----> 动态功能模块(存在布局)
我在所有模块中都启用了数据绑定和 kapt。
我无法成功构建应用程序。Android Studio 给了我以下错误,
动态功能模块中的布局文件:
App模块中的绑定适配器:
android - 对于具有动态功能模块的 Android 多模块项目,Lint 任务永远不会完成
我们的应用程序包含 20 多个多模块和一个按需动态功能模块。
在添加动态功能模块之前,在 CI 和本地完成 lint 任务需要 20-30 分钟,但在添加动态功能模块后,即使在 CI 和本地 1-2 小时后也无法完成,现在是成为一个严重的问题。
我认为 lint 需要 20-30 分钟已经是一个奇怪的情况,但我们确实喜欢首先解决 lint 根本没有完成任务的问题。
我查看了有关支持动态功能模块的问题跟踪器;虽然它说问题已经解决并说checkDependencies
标志是不必要的,但删除标志并不会改变我们项目中的情况。
在 CI 上,我们运行 gradle 命令./gradlew app:lint{Flavor}Debug
(在我们的例子中,./gradlew app:lintDevDebug
)来运行 lint。
这是我们的 gradle 配置app
:
其他模块或动态功能模块上的任何其他 build.gradle 文件都没有 lint 配置。
任何帮助或评论将不胜感激。
谢谢!