React Native를 통해 Android개발을 진행하는 과정에서
빌드를 할 때 gradle을 통해 진행이 된다.
이때 gradle의 버전이 프로젝트에 따라서 중요한데,
gradle의 버전과 관련하여 혼동되는 부분이 존재한다.
프로젝트/android/grale/wrapper/gradle-wrapper.properties 를 보면,
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
위와 같은 형태로 프로젝트 빌드시 사용할 gradle 버전이 명시되어 있다.
그리고 내가 현재 진행하는 프로젝트의 프로젝트/android/build.gradle 에는 다음과 같은 gradle 버전이 명시되어 있다.
buildScript {
...
dependencies {
...
classpath("com.android.tools.build:gradle:7.3.1")
...
}
....
}
실제로 빌드를 하면 프로젝트/android/.gradle에 7.5.1에 대한 버전이 명시가 되어 있는데,
android/build.gradle에는 위와 같이 다른 버전의 gradle이 명시되어 있다.
심지어 빌드가 잘 되는데, 때로는 다른 plugin을 추가함에 따라 위의 버전이 문제를 일으키기도 한다.
왜 그럴까하고 찾아보니,
gradle-wrapper.properties에 명시되어 있는 gradle의 버전은 내 프로젝트를 빌드할 때 사용될 버전이고
android/build.gradle의 dependencies에 명시되어 있는 버전은
Android를 build할 때 사용하게 될 gradle 버전으로, Android Gradle Plugin의 버전이다. (AGP라고도 함)
프로젝트의 gradle 버전에 따라서, 호환되는 AGP의 버전이 달라서 오류가 발생할 수 있다.
(본인은 Firebase를 도입하면서 AGP의 버전이 문제가 발생하였고, 7.2.1에서 7.3.1로 변경하였다.)