2

我有这个项目结构:

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

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

我像这样使用productFlavors

    productFlavors {
        public {
            dynamicFeatures = [':dynamicFeature1']
        }
        development {
            dynamicFeatures = [':dynamicFeature1', ':dynamicFeature2']
        }
    }

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

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

4

2 回答 2

1

我也有同样的问题。这个解决方案可以帮助我

android{
...
    productFlavors {
        public {}
        development {}
    }

    def gradleStartTasks = gradle.getStartParameter().taskNames
    gradleStartTasks.forEach { taskName ->
    if (taskName.contains('Development')) {
        dynamicFeatures = [':dynamicFeature1', ':dynamicFeature2']
    } else if (taskName.contains('Public')) {
        dynamicFeatures = [':dynamicFeature1']
    }
}
于 2021-09-24T14:04:45.780 回答
0

我现在按照这个问题来解决它。我创建了一个开发源集dynamicFeature2,其中只有一个清单文件。该清单声明:

    <dist:module
        dist:instant="false"
        dist:title="@string/title_dynamic_feature_2"
        tools:node="replace">
        <dist:delivery>
            <dist:install-time />
        </dist:delivery>
        <dist:fusing dist:include="true" />
    </dist:module>

主要源集中的清单使用<dist:on-demand />. 这种方式我只dynamicFeature2安装了开发* 变体,并且我没有为此功能创建SplitInstallRequest 。

这只是一种解决方法,因为捆绑包仍然包含dynamicFeature2apk,我希望不要使用 gradle 配置来构建它。

于 2020-12-17T09:11:08.817 回答