2015-09-14 35 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

插件的工作示例