2015-09-14 38 views
2

添加依赖beforeResolve我有一个使用下面的代码定制的摇篮插件:自定义插件从Android Studio中

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

我的猜测是存在某种缓存或Studio构建更多的变体(我只是运行我希望从命令行运行的变体每次)。

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

回答

0

我设法弄清楚了这一点。这样做的方法是添加一个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

插件的工作示例