问题标签 [dynamic-feature]

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 投票
2 回答
802 浏览

android - Butterknife 在动态功能子项目中不起作用:错误:包 R2 不存在

我正在迁移应用程序以使用动态交付和动态功能模块,而黄油刀不再适用于新配置。

目前,butterknife 在基本:app模块中工作,它也可以在标有apply plugin: 'com.android.library'. 问题仅在我的新动态功能模块中,标有plugin: 'com.android.dynamic-feature'.

这是我的项目级 gradle 文件:

现在我的基本应用程序 gradle 文件(在:appButternifeR中照常使用)

最后,这里是我的动态功能模块的 gradle 文件,其中黄油刀不起作用,绑定R给了我null预期的参考,并且R2完全丢失了。

最后,这是我在尝试使用黄油刀(error: package R2 does not exist)时在我的动态功能模块中得到的

在此处输入图像描述

有任何想法吗?提前致谢!

0 投票
1 回答
426 浏览

android - Android 在构建动态功能时要求将“hasCode”属性设置为 false

尝试构建捆绑包时出现以下错误。

我添加了一个名为 dynamicFeature 的动态功能,它有一个我想与之交互的 .java 文件,但不知何故,在构建捆绑包时,它似乎无法识别该文件,并要求我将“hasCode”设置为 false。有没有人遇到过类似的问题?

0 投票
3 回答
1297 浏览

android - 为什么 android studio 组装我们的 dyanimc 功能模块测试 apk?

我们有一个核心 android 应用程序模块(称为app)和一个动态功能模块(称为replay)。即使这是一个 DFM,我们也会在安装时包含它。在我们 DFM 的 AndroidManifest.xml 中:

我们可以使用 CL 中包含的 DFM 构建我们的 apk:$ ./gradlew app:assembleDebug

现在在测试时间......我们的功能模块中没有任何仪器测试replay,只有我们的app模块。所以我们可以从命令行运行仪器测试就好了:$ ./gradlew app:connectedDebugAndroidTest

然而,我们最近开始尝试在 Android Studio 中运行仪器测试。我们再次只想在app模块上运行测试:

在此处输入图像描述

现在的问题是我们收到了一堆奇怪的“Android资源链接失败”错误:

我们正在为我们的几个第三方依赖项(facebook、leakcanary、beacon 等)获取这些。它们似乎都是向现有 xml 文件(strings.xml、AndroidManifest.xml)添加值的库

它看起来像是replay构建过程的一部分,AAPT 试图在我们的replay模块中查找实际上在其他库中的资源。但是,为什么 AAPT 会查看我们的replay功能模块:com.example.android.feature.replay.test:string/hs_beacon_empty

我没有完全了解 AAPT 如何为动态模块合并资源,我更不了解它是如何为仪器测试 apk 做到这一点的。

我不明白为什么这可以通过 CL 工作,所以我查看了 Android Studio 构建日志的顶部,当我运行仪器测试时我看到了

所以现在更基本的问题是,为什么 Android Studio 在为应用模块运行测试时会尝试组装重放和重放测试代码?


FWIW 我正在运行 Android Studio 和 AGP 3.5 Beta 5

0 投票
3 回答
595 浏览

android - 您如何通过即时应用程序中的意图共享图像?

我们正在构建一个测验即时应用程序,用户可以在其中完成测验,然后分享他们的结果。我们共享一些带有链接的文本,以及显示用户测验结果的图像。在已安装的应用程序中执行此流程时没有问题,但是在免安装应用程序中,图像无法共享。

以下是我们生成意图的方式:

这是我们的基本应用程序清单中的提供程序:

当用户在免安装应用中分享图片时,logcat 中会出现以下错误消息:

我尝试设置exported="true",这会在启动时使即时应用程序崩溃,但出现以下异常:

我猜即时应用程序不能使用 FLAG_GRANT_READ_URI_PERMISSION 标志,原因与它们不能使用 WRITE_EXTERNAL_STORAGE 权限的原因相同。

还有其他方法可以在即时应用程序中共享图像吗?

0 投票
0 回答
642 浏览

android - Android 动态功能模块作为子模块

我正在使用这种新的模块类型,我想知道是否可以在目录中使用它。因此,我以“ui”目录中的“home”模块为例,得到了这个错误:

但是gradle对于其他模块是子模块没有问题,所以我猜这个问题可能是特定于动态特性的

这是“app”模块的gradle:

0 投票
0 回答
870 浏览

android - 无法访问动态功能模块的资源

我正在尝试将新的 Android 动态交付功能添加到我的应用程序中,但我访问动态功能模块资源的尝试一直失败。

基本思想是加载一个没有代码但有一堆矢量文件作为可绘制资源的模块。

我能够加载模块甚至访问给定模块的资产,但我不知道如何访问资源。

正如我所说,我能够阅读资产 txt 文件中的文本,但我似乎没有在资源中找到任何可绘制对象。

当我尝试获取我知道在动态模块的资源文件夹中的可绘制对象时,我得到一个ResourcesNotFoundException

我已通读 Google 提供的 Android 文档,但我无法找到有关如何访问已下载模块资源的详细信息

https://developer.android.com/guide/app-bundle/playcore#access_installed_modules

0 投票
4 回答
1460 浏览

android - 从主模块访问动态功能模块的可绘制文件夹中的图形

为了将我的游戏应用程序分解为即时和可安装版本,我开始使用动态模块拆分 API 交付。我一直在关注这里的 Codelabs 教程https://codelabs.developers.google.com/codelabs/on-demand-dynamic-delivery/index.html#0。不幸的是,它使用 Kotlin 来编写 MainActivity 代码,它不如 Java 特定,但如果你已经完成了 Kotlin 教程,仍然相当容易理解。该示例包括使用以下内容访问“资产”功能模块中“资产”文件夹中的文本图块:

现在我只想访问动态功能模块的可绘制文件夹中的图形文件。我只会使用我的动态功能模块来存储大型图形,这将使我超过 10 MG 的即时应用程序下载限制。最干净的方法是什么?

主“应用程序”模块:

在此处输入图像描述

“应用程序”中的 Java 代码:

动态交付的“installationassets”模块:

在此处输入图像描述

'app'中的Java代码仍然无法到达:

0 投票
0 回答
679 浏览

android - 打开动态模块时出现 NoClassDefFoundError

假设我创建了一个 Android 项目AwesomeApp。然后我需要向这个应用程序添加聊天功能。因此,我创建了另一个项目来构建用于聊天的 SDK。我的聊天 SDK 的输出是 4 个aar文件。这些aar文件包含另一个聊天 SDK 的Applozic.

然后我成功地将 4 个aar文件集成到我的文件中AwesomeApp,一切正常。但是aar文件太大了。所以我决定使用Android新的动态交付功能。

为此,我创建了新项目。在清单文件中,我提到了这样的应用程序名称android:name="com.google.android.play.core.splitcompat.SplitCompatApplication"。在这个项目中,我创建了一个动态模块chat-module。在这个动态模块中,我创建了一个活动DynamicActivity并添加了这 4 个aar文件。DynamicActivity我通过单击一个图标来调用(aar 文件的)聊天功能。

我可以成功下载chat-module并打开动态模块DynamicActivitychat-module但是当我点击打开/初始化聊天功能的图标时DynamicActivity- 应用程序崩溃了。崩溃报告:

请帮我解决问题。

0 投票
1 回答
331 浏览

android-manifest - 合并动态功能清单时出现Android错误

我在项目中添加了一个动态功能,AAPT在尝试运行仪器测试时它给了我一个错误。

该项目有 3 种产品风格:

  • 发展
  • 预生产
  • 生产

build.gradle动态模块中,我已经放置了各种口味并正确编译了所有内容。但是尝试运行仪器测试会给我这个错误:

我已经尝试了几件事,但我没有找到解决方案。

0 投票
0 回答
275 浏览

java - 如何为android中的模块注入动态功能?

我是 android 新手,现在我正在做一个项目,该项目要求我从 Android 应用程序中拆分一些动态功能。

我按照 Internet 上的指南进行操作,但是当我尝试运行我的代码时,它显示以下错误消息:

我将工作板拆分为我的动态功能,这是源代码。

而且我还找到了需要注入基于 dagger2 的代码的地方(我也是这个包的新手):

由于所有类都是用代码静态编写的,当我尝试加载动态功能时,是否可以将我的作业活动类动态注入到以前的代码中?

下面是尝试加载动态功能的代码:

如果您想查看整个项目以了解我所说的内容,请访问:https ://github.com/Earthaa/materialistic