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

2ast·2022년 10월 27일
0
post-custom-banner

문제 발생 상황

개발을 마무리 짓고 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 개발블로그
post-custom-banner

0개의 댓글