文章目录
一、前言
以前Android的很多依赖库都是通过jcenter()
进行依赖的。但是现在要迁移到mavenCentral()
上面。而且等gradle8.0
后就没有办法使用了。那么对于一些正在使用的仓库该如何迁移呢
二、三种情况
这里分三种情况来处理,一种是Android本身的库,一种是第三方的库,一种是没有迁移的仓库
(因为迁移了,所以可能依赖名字不能完全一样,所以可以通过关键的单词进行查找)
1、Android官方依赖库
可以在以下网址进行查询,而且还有部分Google的依赖库
https://maven.google.com/web/index.html
2、第三方依赖库
可以通过以下网址进行查询
https://search.maven.org/
3、没有迁移的库
还有一种库是没有迁移的。但是新版的gradle又不让使用了,这里有两种解决方式。
a、直接依赖源码、aar、jar、或者将代码自己找个仓库存起来
b、依赖别人的代理仓库,比如阿里的仓库
这里是阿里的代理仓库地址:
https://developer.aliyun.com/mvn/guide
三、依赖库中包含了没有迁移的仓库
有这么一种情况,假如有一个依赖库使用的是发布在jcenter()
上面的版本。我们又不能直接替换,那么需要采取以下这种方式将旧版本屏蔽掉,然后自己再添加新的版本
dependencies {
implementation 'com.google.android.flexbox:flexbox:3.0.0'
}
configurations {
//这个通过锁定group 和 module 将该依赖全部移除
// 第1中方式
all*.exclude group: 'com.google.android', module: 'flexbox'
// 或者粗暴点,就没有上面的坑了
// 第2中方式,将包含 该module的依赖全部移除
all*.exclude module: 'flexbox'
}
//下面强制整个项目全部使用该版本的依赖
configurations.all {
resolutionStrategy {
force "com.google.android.flexbox:flexbox:3.0.0"
}
}
这里的方式可以参考以下链接:
https://blog.csdn.net/Mr_Tony/article/details/108776208
注意: 该迁移的前提是包名、类名这些没有变化,否则依然会有问题。如果是包名、类名变化这些问题可以通过编写gradle
插件的方式在代码编译期间对其进行更改