이번엔 반가운 안드로이드 에러로 돌아왔다.
왜 갑자기 안드로이드냐면, 오늘 ios 버전으로 앱스토어에 심사 요청을 했다.
android와 ios를 한꺼번에 개발하려다보니, 코드상 달라지는 부분이 좀 있었기 때문에 최대한 ios 심사를 요청한 후, 다시 android 버전 업데이트를 진행하고자 다시 android 개발로 돌아왔다.
근데, 하루 만에 android로 빌드를 진행하려다 보니 갑자기 이런 에러가 났다.
> Failed to apply plugin 'com.android.internal.version-check'.
> Minimum supported Gradle version is 8.7. Current version is 8.6
갑자기 gradle 버전 에러가 났다.
뭐지? 싶었는데, 생각해보니까 ios 관련 에러를 처리하느라 react-native 버전을 0.74.2 -> 0.75.2로 업그레이드를 진행한 적이 있었다.
버전이 업그레이드되서 호환되는 gradle 버전이 달라졌을거란 생각에, 8.6 -> 8.7로 업그레이드 하면 빌드가 무사히 될 지 알았지만,,
안드로이드는 쉽게 넘어갈 생각이 없었다.
이번엔 gradle 버전 에러가 아닌, 다른 에러가 났다.
error Failed to install the app. Command failed with exit code 1: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 FAILURE: Build failed with an exception. * What went wrong:
A problem was found with the configuration of task ':app:generateAutolinkingPackageList' (type 'GeneratePackageListTask')
이번엔 갑자기 autolinking이 되지 않는다는 에러가 났다.
이상했다.
분명, react native의 특정 버전 이상부터는 autolinking이 자동으로 되는 걸로 알았는데, 갑자기 autolinking에러라고...??
gpt랑 계속 토론해보다가 이런 에러는 구글링이 조금 더 정확할 것 같다는 생각에 열심히 구글링을 해보았다.
그러던 중, 이 에러와 관련된 깃허브 이슈를 찾아보았는데, 여기서 이야기를 나누는 사람들도 모두 버전 문제로 이 에러를 겪는듯 보였다.
가장 사람들에게 반응이 좋았던 해결법으로 해결해보았는데, 무사히 해결되었다!
해결법
1. gradle-wrapper.properties 파일 내부의 distributionUrl 업데이트
distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip
일단은, gradle 버전부터 8.6에서 8.7로 변경해줘야 한다. 숫자 변경만 해주면 실행 시 자동으로 gradle 버전 다운로드 후 적용해주니 그 뒤로 신경쓸 건 없다.
2. app/build.gradle 파일에 autolinkLibrariesWithApp() 추가
react {
autolinkLibrariesWithApp()
}
그 후, autoliking 해결을 위한 autolink 관련 코드를 추가해줘야 한다.
3. app/build.gradle 파일에서 아래 줄 제거
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle")
applyNativeModulesAppBuildGradle(project)
제거만 하면 된다. 나는 주석처리 해주었다.
4. settings.gradle 파일에서 아래 줄을 제거
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
마찬가지로 제거!
5. rootProject.name 속성 위에 아래 줄 추가
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
여기서 키포인트는, 반드시 rootProject.name위에 추가해줘야 한다. 나는 밑에 추가해줬더니,
The pluginManagement {} block must appear before any other statements in the script.
하나의 에러를 추가로 또 발견할 수 있었다.
6. android에서 .build, .gradle 폴더 삭제
7. node_modules, yarn.lock 파일 제거
여기서 yarn은 yarn을 쓰는 사람 전용이고, 나는 npm을 사용했기 때문에, 그냥 node_module 삭제 후, npx react-native run-android로 빌드하였더니 성공적으로 해결되었다.
정리
아직까지 빌드 에러가 제일 해결하기가 어렵지만, 그래도 issue 등을 잘 찾아보면 나와 같은 에러를 겪은 사람이 최소 한명쯤은 있는 것 같아 다행이다. 이제는 버전 에러는 그만 보고 싶다..
굿굿! 덕분에 1분만에 문제 해결하였습니다. 충성!