React Native) resource android:attr/lStar not found. 에러 해결하기

2ast·2022년 10월 27일
0

문제 발생 상황

개발을 마무리 짓고 android 에뮬레이터에서 최종 점검을 하기 위해 apk를 빌드하는 과정이었다. npm run android를 사용해서 빌드했을 때는 아무 문제가 없었기 때문에 apk를 빌드하는 과정도 문제가 없을 줄 알았다.

cd android && ./gradlew assembleRelease

하지만 빌드가 끝나갈 때 쯤 Android resource linking failed라는 메시지와 함께, 아래 경로에서 참조하는 android:attr/lStar를 찾지 못하겠다는 에러가 발생했다.

나의 경우 개발을 위해 다운 받았던 react-native-wheel-pick이라는 라이브러리에서 문제가 문제였다.

해결 과정

android:attr/lStar not found. 라는 키워드로 구글링을 해봤지만 android/build.gradle 파일의 sdk버전을 올리라는 얘기만 나올뿐 내 상황에 맞는 해결책은 찾지 못하고 있었다. 이미 내 프로젝트의 sdk버전은 최신이었기 때문이다. 문제가 발생한 프로젝트 루트도 달랐다.

게다가 assembleRelease에서만 에러가 발생할 뿐, bundleRelease, npm run android, 심지어 assembleReleaseStaging에서는 에러가 발생하지 않았기 때문에 에러는 더 미궁으로 빠져들었다.

해결

필사의 구글링 결과 나와 동일한 에러케이스를 찾아낼 수 있었다. 추가로 설치한 패키지에서 에러가 발생해서 에러 경로가 node_modules 내부인 케이스였는데, node_modules/[package name]/android/build.gradle의 sdk 버전을 내 프로젝트의 sdk 버전과 일치시키면 해결이 된다는 답변이었다.

node_modules의 해당 패키지가 갖고 있는 sdk 버전을 현재 내 프로젝트의 sdk 버전과 일치시키니 에러가 사라졌다.

// project_root/node_modules/[package name]/android/build.gradle

android {
    compileSdkVersion 30
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
}

to

android {
    compileSdkVersion 31 //<- here
    defaultConfig {
        minSdkVersion 21 //<- here
        targetSdkVersion 31 //<- here
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
}
profile
React-Native 개발블로그

0개의 댓글