2

我查看了 Google 的示例和代码实验室,它们看起来很简单,但它们适用于主应用程序直接访问的模块。我的问题是我有一个主应用程序从不直接访问的模块。

基本上我有这个:

应用程序 -> 模块 A -> 模块 B -> 模块 C

所以AppimportsA作为一个gradle implementationAimportsBBimports C

我想要C一个很少使用且很大的动态模块。

我已经准备好C了,apply plugin: 'com.android.dynamic-feature'但我陷入了依赖关系。

如果我dynamicFeatures = [':C']在 gradle 文件中设置B,它会失败,因为Could not set unknown property 'dynamicFeatures' for object

如果我设置dynamycFeatures加号implementApp我得到Unable to resolve dependency for ':app@prodDebug/compileClasspath': Could not resolve project :C

那么我该如何使用这个项目层次结构呢?

谢谢。

4

2 回答 2

1

你检查过格子吗?https://github.com/android/plaid

https://medium.com/androiddevelopers/a-patchwork-plaid-monolith-to-modularized-app-60235d9f212e 他们使用反射 API 解决了您的问题

于 2019-11-20T08:43:59.360 回答
0

如果“prodDebug”是您在主模块中的构建类型,请确保您在所有模块中都有该构建类型。看看这是否解决了构建问题。我遇到过同样的问题。

通常,您将拥有一个应用层次结构,其中您将拥有一个基本模块和可以插入基本模块的动态模块。这已经成功地安静了。

于 2019-11-18T10:13:03.770 回答