两个问题,
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'
?