Android Release Build
$ cd android && gradlew installRelease
> Task :app:stripReleaseDebugSymbols
Unable to strip library 'C:\Users\[projectRoot]\android\app\build\intermediates\merged_native_libs\release\out\lib\armeabi\libucrop.so' due to missing strip tool for A
BI 'ARMEABI'. Packaging it as is.
<============-> 99% EXECUTING [3m 26s]
여기서 멈추고 계속 반응이 없었다. 여러번 시도를 했는데 7분 이상 지연될 때도 있었다. 그래서 일단 빌드만 시도해 보기로 했다. 아래의 명령어를 실행한다.
$ cd android && gradlew assembleRelease
Error log
> Task :react-native-seoul_naver-login:verifyReleaseResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-seoul_naver-login:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
C:\Users\.gradle\caches\transforms-2\files-2.1\b0e89224af9fe655a4ab2212c7a275a2\appcompat-1.0.2\res\values-v28\values-v28.xml:5:5-8:13: AAPT: error: resource android:attr/dialogCornerRadius not found.
C:\Users\.gradle\caches\transforms-2\files-2.1\b0e89224af9fe655a4ab2212c7a275a2\appcompat-1.0.2\res\values-v28\values-v28.xml:9:5-12:13: AAPT: error: resource android:attr/dialogCornerRadius not found.
C:\Users\.gradle\caches\transforms-2\files-2.1\f0a09ec3f74f8ffea66efb94841011f8\core-1.0.1\res\values\values.xml:57:5-88:25: AAPT: error: resource android:attr/fontVariationSettings not found.
C:\Users\.gradle\caches\transforms-2\files-2.1\f0a09ec3f74f8ffea66efb94841011f8\core-1.0.1\res\values\values.xml:57:5-88:25: AAPT: error: resource android:attr/ttcIndex not found.
에러가 나왔다. 현재 프로젝트에서 사용하는 react-native-seoul의 naver-login에서 문제가 발생한듯 하다. 관련해서 구글링을 해보니 SDK 버전 문제라는 말이 많았다.
현재 내 프로젝트의 targetSdkVersion은 29이다. 언제 저렇게 올라갔지 기억을 더듬어보다가 혹시 navigation이나 react-native-firebase 같은 큼지막한 라이브러리 업그레이드를 하다가 버전 문제가 있었나 싶어서 라이브러리 공식 사이트를 봐도 큰 문제는 없어보인다. React-Native 버전을 최신으로 업그레이드 하면서 29로 예전에 올린듯 하다.
그래서 sdkVersion이 다른 라이브러리에 비해 너무 높아서 문제인가 싶어서 sdkVersion을 28로 낮췄더니, assembleRelease에서는 에러가 안나지만 installRelease시 다른 연관 라이브러리에서 사이드 에러가 났다. 그래서 다시 롤백하고 react-native-naver-login github에 가보았다. 나와 같은 이슈가 있었다.
@react-native-seoul/naver-login 내부 모듈의 build.gradle 버전을 확인해보니,
(경로참조 : /node_modules/@react-native-seoul/naver-login/android/build.gradle )
def DEFAULT_COMPILE_SDK_VERSION = 27
def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3"
def DEFAULT_MIN_SDK_VERSION = 16
def DEFAULT_TARGET_SDK_VERSION = 26
좀 낮은거 같기도하고... github에서 말한대로 SDK 버전을 바꿔보았다. 라이브러리 업데이트가 꾸준하지 않아서 오래된 버전이라 문제인 듯 하다.
def DEFAULT_COMPILE_SDK_VERSION = 28
def DEFAULT_BUILD_TOOLS_VERSION = "28.0.3"
def DEFAULT_MIN_SDK_VERSION = 16
def DEFAULT_TARGET_SDK_VERSION = 28
그리고 다시 빌드하니 성공! 하지만 라이브러리이다 보니 다시 빌드할 때 노드 모듈에서 수정해봤자 다 날라가버린다. 그래서 npm install 또는 yarn 할때마다 수정된 소스를 patch 시켜줄 수 있는 라이브러리가 있는데 이걸 사용해서 patch 시킴.
키워드는 'patch-package'이다.
차후에 계속 업그레이드를 해야할 일이 있을텐데 다음에는 이런 문제가 안생기려나 모르겠다.