在android gradle中循环依赖项时,如何获得当前的风格?

在android gradle中循环依赖项时,如何获得当前的风格?,android,gradle,android-build-flavors,Android,Gradle,Android Build Flavors,我们有一个有100多种口味的大型项目。为了使我们的Google play服务保持一致,我想定义一个默认版本,然后根据需要在flavors中覆盖它 因此,为了让我们的所有依赖项使用相同的版本,我有以下内容: configurations.all { resolutionStrategy { eachDependency { DependencyResolveDetails details -> //specifying a fixed ver

我们有一个有100多种口味的大型项目。为了使我们的Google play服务保持一致,我想定义一个默认版本,然后根据需要在flavors中覆盖它

因此,为了让我们的所有依赖项使用相同的版本,我有以下内容:

 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循环中使用变量版本


是否仍然可以访问该循环中的该变量?

您可以直接在
依赖项
块中执行此操作:

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
作为示例)

是否覆盖
ext.googlePlayServicesVersion
变量?我的意思是,如果变量的值正确,您真的需要
myflavorcomile
吗?谢谢,好提示。不过,我试图为所有gms依赖项设置它们。这是因为有时第三方依赖项会潜入到服务依赖项中,并在版本不同时导致zip异常。