自定义插件在Android Studio

时间:2015-09-14 17:44:45

标签: android android-studio gradle

我有一个使用以下代码的自定义Gradle插件:

project.getGradle().addListener(new DependencyResolutionListener() {
    @Override
    void beforeResolve(ResolvableDependencies resolvableDependencies) {
        depsToAdd.each { dep ->
            compileConfig.getDependencies()
                .add(project.getDependencies()
                .create(dep)
        }

    }

    @Override
    void afterResolve(ResolvableDependencies resolvableDependencies) {

    }
})

这似乎可以在命令行中正常工作。但是,如果我从Android Studio刷新gradle,它会使用Cannot change configuration :app:compile after it has been resolved

进行barfs

我的猜测是有某种缓存或Studio构建更多变种(我只是从命令行运行我想要的变种的汇编,每次都有效。)

有谁知道可能会发生什么以及如何最好地解决这个问题?

1 个答案:

答案 0 :(得分:2)

我设法解决了这个问题。这样做的方法是添加DependencyResolutionListener,在其中添加依赖项,然后删除侦听器,以便它不会尝试在以后的解决步骤中添加它们。

compileDeps = project.getConfigurations().getByName("compile").getDependencies()
project.getGradle().addListener(new DependencyResolutionListener() {
    @Override
    void beforeResolve(ResolvableDependencies resolvableDependencies) {
        compileDeps.add(project.getDependencies().create("org.foo:bar:$version"))
        project.getGradle().removeListener(this)
    }

    @Override
    void afterResolve(ResolvableDependencies resolvableDependencies) {}
})

我有一个使用此here

的插件的工作示例