resolutionStrategy是否会影响从属库

时间:2018-07-11 20:41:47

标签: android android-gradle

有一个项目本身正在使用supportLib版本0f 27.1.1。

它依赖于一些库,不确定是哪个库导致此错误:

  

任务':demo:processDebugManifest'的执行失败。   清单合并失败:来自[com.android.support:support-emoji-appcompat:26.0.2] AndroidManifest.xml:25:13-35的属性meta-data#android.support.VERSION@value value =(26.0.2)       也出现在[com.android.support:percent:26.1.0] AndroidManifest.xml:25:13-35 value =(26.1.0)。       建议:在AndroidManifest.xml:23:9-25:38的元素上添加'tools:replace =“ android:value”'以进行覆盖。

添加此决议策略后:

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "${versions.support}"  //<== versions.support is 27.1.1
            }
        }
    }
}

错误消失了。

我猜它说这个项目应该使用27.1.1,无论是否存在依赖项可能使用不同的依赖项。

问题是这是否还会迫使从属库使用27.1.1,这可能不适用于此版本的27.1.1?

还是只影响这个项目本身?

1 个答案:

答案 0 :(得分:0)

它更改了所请求的组com.android.support的版本号,并且没有版本27.1.1的“不同版本”。也可以使用Manifest.xml<application> tools:replace标签中定义版本号:

<meta-data
   android:name="android.support.VERSION"
   android:value="27.1.1"
   tools:replace="android:value"/>