1

有一个依赖于 lib 的应用程序,该 lib 具有依赖关系:

api "com.google.android.gms:play-services:11.0.2"

在它想要使用的这个应用程序中com.google.android.gms:play-services-maps:15.0.1,所以它做了这些是gradle:

implementation ('com.google.android.gms:play-services-maps:15.0.1') { force = true }

这会触发下载以及

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested

    if (details.requested.group == 'com.google.android.gms' && requested.name.contains('play-services-maps')) {
        details.useVersion "15.0.1"
    }

    /*
    // this causes build error that cannot relsove the xxx-15.0.0
    //
    if (requested.name.contains('play-services')
            && VersionNumber.parse(requested.version) < VersionNumber.parse(15.0.0)
        ) {
        details.useVersion "15.0.0"
    }
    */
}
}

在依赖图中,它显示:

dogfoodRuntimeClasspath - Dependencies for runtime/packaging

+--- com.google.android.gms:play-services-maps:15.0.1@aar

但是在运行时仍然在它引用的地方崩溃LatLng

NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/maps/model/LatLng

这是从play-services-maps:15.0.1

问题1:为什么会这样,如何强制使用15.0.1版本?

2:似乎没有人依赖"com.google.android.gms:play-services:15.0.0",部分:

/*
// this causes build error that cannot relsove the xxx-15.0.0
//
if (requested.name.contains('play-services')
        && VersionNumber.parse(requested.version) < VersionNumber.parse(15.0.0)
    ) {
    details.useVersion "15.0.0"
}
*/

会找到requested.version==11.0.2并尝试用15.0.0替换,但这会导致无法解析play-service-xxx:15.0.0的失败。

是不是因为resolutionStrategy只替换了版本号而不会下载文件?

4

0 回答 0