Android项目:仅用jcenter还是同时用jcenter与mavenCentral更稳定?
从应用稳定性角度,仅用jcenter()还是同时用jcenter()+mavenCentral()更稳妥?
结论:同时配置两个仓库更稳妥
核心原因:
- jcenter的长期停用风险:jcenter早在2021年就转为只读状态,不再接受新包上传,官方明确后续会逐步终止服务。如果只依赖jcenter,哪天它彻底下线,你的项目直接就拉取不到依赖,构建失败。
- 双仓库的互补作用:
- 你那些仅存于jcenter的依赖,Gradle会按仓库顺序查找,找不到再去jcenter拿,完全不影响使用;
- 像Android Gradle插件、Google服务这类主流依赖,mavenCentral和google()仓库都有备份,就算jcenter临时抽风,也能从其他仓库拉取,保证构建不中断。
- 配置无冲突:你提供的双仓库配置完全兼容现有项目,Gradle查找依赖时会按声明顺序依次检索,找到匹配的就停止,不会出现重复拉取或冲突问题。
额外建议:
- 别一直依赖jcenter,定期检查你的专属依赖是否已经迁移到mavenCentral,一旦有迁移版本,及时替换,彻底摆脱对jcenter的依赖才是长久之计。
- 调整仓库顺序:把
mavenCentral()放在jcenter()前面,让Gradle优先从mavenCentral找已迁移的依赖,减少对jcenter的依赖次数。
仅使用jcenter()的配置:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.2.1' classpath 'com.google.gms:google-services:4.3.13' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1' } } allprojects { repositories { google() jcenter() maven { url "https://jitpack.io" } } } task clean(type: Delete) { delete rootProject.buildDir }
同时使用jcenter()与mavenCentral()的配置:
buildscript { repositories { google() jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.2.1' classpath 'com.google.gms:google-services:4.3.13' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1' } } allprojects { repositories { google() jcenter() mavenCentral() maven { url "https://jitpack.io" } } } task clean(type: Delete) { delete rootProject.buildDir }
内容的提问来源于stack exchange,提问作者Eldestornillador
相关产品推荐
相关产品推荐

