2016-10-13 58 views
2

我們有一個有100多種口味的大項目。爲了保持我們的Google play服務的一致性,我想定義一個默認版本,然後根據需要重新調整它的口味。如何在android gradle中循環依賴時獲得當前的風格?

因此,要爲我們所有的各種依賴於使用相同的版本我有這樣的:

configurations.all { 
    resolutionStrategy { 
     eachDependency { DependencyResolveDetails details -> 
      //specifying a fixed version for all libraries with 'com.google.android.gms' group 
      if (details.requested.group == 'com.google.android.gms') { 
       details.useVersion '8.4.0' 
      } 
     } 
    } 
} 

我想定義:

defaultConfig { 
    ext.googlePlayServicesVersion '9.6.0' 
} 

然後在騎在我的味道:

myFlavor { 
    // XXX plugin requires this older version 
    ext.googlePlayServicesVersion '8.4.0' 
} 

然後在configuration.all循環中使用變量版本。

有無論如何去訪問該循環中的變量嗎?

回答

2

您可以在dependencies塊直接做到這一點:

dependencies { 
    compile "com.google.android.gms:play-services-ads:$ext.googlePlayServicesVersion" 
    myFlavorCompile "com.google.android.gms:play-services-ads:$ext.googlePlayServicesVersionOld" 
} 

flavorNameCompile設置將覆蓋爲相同的依賴默認compile依賴,並允許您重寫的版本爲特定口味的任何項目的味道依賴。

(我用play-services-ads只是作爲一個例子)

+0

是否'ext.googlePlayServicesVersion'變量得到覆蓋?我的意思是如果變量具有正確的值,你真的需要'myFlavorCompile'嗎? –

+0

謝謝,好的提示。儘管我試圖爲所有gms依賴項設置它們。這是因爲有時第三方依賴關係會潛入服務依賴關係,並在版本不同時導致zip異常。 – CaptRespect