JCenter Replace With Mavencentral 빌드 에러
이미 많이들 아시겠지만 JCenter가 21년 3월 31일 이후로 추가 업데이트를 받지 않았다. 이렇게 서비스 종료 수순을 밟으려다가 커뮤니티의 뭇매를 맞고(ㅎㅎ) read-only 무기한 서비스를 제공하겠다고 하였다.
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
buildscript {
repositories {
google()
jcenter()
}
...
JCenter Maven repository is no longer receiving updates: newer library versions may be available elsewhere
프로젝트/build.gradle에서 repository에 jcenter()
를 넣으면 위와 같은 경고 문구가 볼 수 있다.
무작정 replace with mavenCentral()
을 하면 빌드 에러가 발생한다.
* What went wrong:
Execution failed for task ':app:dataBindingMergeDependencyArtifactsDevDebug'.
> Could not resolve all files for configuration ':app:devDebugCompileClasspath'.
> Could not find com.google.android.exoplayer:exoplayer-core:2.12.1.
Required by:
project :app
> Could not find com.google.android.exoplayer:exoplayer-ui:2.12.1.
Required by:
project :app
> Could not find com.danikula:videocache:2.7.1.
Required by:
project :app
로그 상 exoplayer와 videocache가 잡혔는데 해결법이 각각 다르다.
exoplayer의 경우 mavenCentral()에 최신 버전부터 올라가 있으므로 dependency 버전을 올려줘야 한다.
videocache의 경우는 찾아보니 아예 mavenCentral에 업데이트가 없어서 JCenter에서밖에 내려받을 수 없다.
이 경우 아래와 같이 둘다 선언해주면 빌드 에러는 해결된다.
buildscript {
repositories {
google()
jcenter() // for videocache
mavenCentral()
}
...
또는 버전을 올리지 않고 jcenter()
만 선언하고 JCenter에 올라온 가장 최신 버전을 사용할 수도 있다.
https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
exoplayer의 경우 2.16.0 (2021-11-04) 까지 JCenter를 통해 배포되었다.
하지만 android 33까지 가면서 기기 권한 등 많은 것들이 변하고 있기 때문에, target 버전을 올린다면 더이상 업데이트 되지 않는 videocache같은 라이브러리는 걷어내야 할 것이다.