是否需要为仅从库中需要的工件指定存储库,以及resolutionStrategy.eachDependency如何工作

时间:2018-08-01 17:23:15

标签: android gradle android-gradle artifactory resolutionstrategy

两个问题,

1。托管应用是否需要为仅需要库中的工件指定存储库。

如果在库中(称为Lib_B)具有依赖性

implementation 'com.news:datas:1.0.0'

'com.news:datas:1.0.0'被发布到maven (url 'https://artifactory.xxx.yyy.com/artifactory/android-local-release')的某个位置,并且在库的级别中具有:

repositories {
    ......
    maven { url 'https://artifactory.xxx.yyy.com/artifactory/android-local-release' }, 
    ......
}

现在在其他应用程序(称为HostApp_A)中对此Lib_B具有依赖关系

implementation 'Lib_B:$version.libb'  

托管应用是否还需要指定

  `maven { url 'https://artifactory.xxx.yyy.com/artifactory/android-local-release' }` 
在自己的repositories块中

以便将'com.news:datas:1.0.0'下载到HostApp_A空间中?

2。 resolutionStrategy.eachDependency的工作方式(在下载文件方面)

如果Lib_b具有依赖性

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

并且在HostApp_A中,它依赖于Lib_b

implementation 'lib_B:$version.libb' 

,它想使用较新的play-service-maps,并强制将其他play-service设置为更高版本,因此它专门增加了对play-service-map的依赖。

implementation "com.google.android.gms:play-services-maps:15.0.1"

并添加resolutionStrategy.eachDependency

ext {
    ......
    minPlayServicesVersion = '15.0.1'
}

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.name.contains('play-services')
            && VersionNumber.parse(requested.version) < VersionNumber.parse(minPlayServicesVersion)
        ) {
        details.useVersion "$minPlayServicesVersion"
    }
}

}

因此对于任何11.0.2版(在Lib_b中指定)的人,将替换为使用15.0.0版。

就像被发现一样

'com.google.android.gms:play-services-fitness:11.0.2'
'com.google.android.gms:play-services-location:11.0.2'
'com.google.android.gms:play-services-maps:11.0.2'
......

等将被替换使用

'com.google.android.gms:play-services-fitness:15.0.1'
'com.google.android.gms:play-services-location:15.0.1'
'com.google.android.gms:play-services-maps:15.0.1'
......

问题是

因为Lib_ B仅指定版本11.0.2,没有人指定对版本15.0.1的依赖,除了HostApp_A中的play-services-maps

resolutionStrategy说要切换为使用版本“ 15.0.1”时,

resolutionStrategy还将负责下载版本15.0.1的版本吗?否则将导致无法解决

的失败

'com.google.android.gms:play-services-fitness:15.0.1''com.google.android.gms:play-services-location:11.0.2'

0 个答案:

没有答案