如何在buildSrc中从一个自定义的Gradle插件中访问Android的 "dynamicFeatures "属性。

在我的项目中,我想生成一个包含动态特征信息的类。动态特征是这样添加的。

// In the base module’s build.gradle file.
android {
    ...
    // Specifies dynamic feature modules that have a dependency on
    // this base module.
    dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}

Source: https:/developer.android.comguideapp-bundleat-install-delivery#base_feature_relationship。

我从几天前就开始寻找解决方案,但没找到什么。目前,我的插件是这样的。

class MyPlugin : Plugin<Project> {

    override fun apply(project: Project) {
        if (project == rootProject) {
            throw Exception("This plugin cannot be applied to root project")
        }

        val parent = project.parent ?: throw Exception("Parent of project cannot be null")

        val extension = project.extensions.getByName("android") as BaseAppModuleExtension?
            ?: throw Exception("Android extension cannot be null")

        extension.dynamicFeatures
    }
}

不幸的是,extension.dynamicFeatures是空的,即使我的插件被应用到有动态特性的build.gradle文件中。

解决方案:

它是空的,因为你试图在gradle生命周期配置阶段获得扩展值,所有gradle属性还没有配置。

使用 afterEvaluate 关闭。在本块中 dynamicFeatures 已经配置好了,而且不是空的。

project.afterEvaluate {
    val extension = project.extensions.getByType(BaseAppModuleExtension::class.java)
        ?: throw Exception("Android extension cannot be null")
    extension.dynamicFeatures
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

Tensorflow 2个字符串标签到one_hot。

2022-9-8 11:22:19

未分类

DELETE WHERE IN C# Sqlite [repicate] (删除)

2022-9-8 11:22:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索