회사에서 들어와서 가장 먼저 한 일이 예전 테스트로 돌아가던 어플이 있었는데 그거를 구동하게 하는 것이 첫번째 일이었다.

 

깃헙을 봤을 때 약간 막막한 부분이 바로 보였다.

README.md 에 대한 부분이 아무것도 없었다는 부분과 마지막 commit이 3년전으로 되어있었다는 부분이었다.

 

흔히 말하는 관리가 안되어지는 레거시 코드였다.

해당 어플의 React Native 버전이 69 였고 최신 버전이 79, 버전 10이 차이나는 코드를 건드리기가 약간 두려웠다.

 

그래도 일단은 한번 node module 을 install 을 하고 실행해보았다.

역시나 돌아가지 않는다.

 

그리고 여기에 엎친데 덮친격으로 회사에서 지급해준 노트북은 약 6년전... 맥북(2019)이다 보니 빌드에는 더욱 더 많은 시간이 걸렸다.

한번 돌릴 때마다 10분 정도의 시간을 소비하면서 에러를 보며 문제점을 하나하나 해결해나가고 있었다.

 

그래도 열심히 구글링도 하면서 문제도 해결하고 종속성 문제도 해결하면서 하다보니 한 7일만에 IOS 를 일단 구동시키는데에 성공했다.

 

메인 프로젝트는 구동을 시켰는데 또 문제가 발생한다. 카메라 모듈은 다른 리포지토리에서 가져와서 사용중인데 거기에서 문제가 터진다.

그래서 또 열심히 수정하고 빌드하고 수정하고 빌드하고 반복을 하면서 어찌저찌 해결을 했다.

 

카메라 모듈도 동작하고 AI Module 도 완벽하게 동작을 하게 만들어서 어플이 돌아가는 것을 확인했고

원하는 결과물이 아니었음을 확인하고 이거는 더이상 안쓴다라는 의견으로 되어가서 깔끔하게 commit 을 하고 push를 올렸다.

 

문제는 여기에서 발생한다.

 

라이브러리 종속성에 대한 문제는 해결을 했기에 거기에 대한 이슈는 없었지만 그것보다 어려운게 해당 라이브러리가 문제가 있어서

라이브러리에 들어가서 수정한 코드들에 대해서 기록을 안한 것이었다.

 

그리고 얼마지나지 않고 다시금 그것을 살려서 거기 기반에 한다고 했을 때 빌드가 안되어지는 이슈가 발생했다.

 

그때 아차 싶었다.
README.md 에 내가 헤딩하면서 겪었던 문제들을 적어놓았으면 다음에 했을 때 문제가 없었을텐데

하필이면 그것을 안적고 Commit 을 하고 push 해서 다시 똑같은 문제를 겪게 되었다라고 자책을 하게되었다.

 

그래서 다시금 헤딩을 하면서 README.md 에 적었고 또 다른 사람(혹은 나)들이 이것을 만져야 할 때

나의 헤딩을 반복하지말라는 뜻을 담아 적었다.

 

그렇게 해서 일부를 보여주면 아래와 같다.

android react-native-reanimated (build 이슈로 인하여 3.5.4 -> 3.4.2)
1. boost 관련 
node_modules/react-native/third-party-podspecs/boost.podspec 에서 
```.podspec
spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
                  :sha256 => 'f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41' }
```
같이 변경 필요

node_modules/react-native-reanimated/andorid/build.gradle 에서 
이전 내용
def srcUrl = "https://boostorg.jfrog.io/artifactory/main/release/${transformedVersion}/source/${artifactLocalName}"

변경 내용
def srcUrl = "https://sourceforge.net/projects/boost/files/boost/${transformedVersion}/boost_${BOOST_VERSION}.tar.gz"

node_modules/react-native-vision-camera/andorid/build.gradle 에서 
이전 내용
def srcUrl = "https://boostorg.jfrog.io/artifactory/main/release/${transformedVersion}/source/${artifactLocalName}"

변경 내용
def srcUrl = "https://sourceforge.net/projects/boost/files/boost/${transformedVersion}/boost_${BOOST_VERSION}.tar.gz"


1. RCT-Folly 관련(추후 react update 시에 해결될 가능성 농후)
No template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
빌드 시 해당 오류 발생 xcode 에서 fix 버튼이 활성화 되어지니 사용하면 해결되어짐


1. React Codegen 관련
```bash
# ios 폴더
rm -rf build
rm -rf Podfile.lock
rm -rf Pods
pod install
```

1. react-native 73 version 으로 올리면서 마주한 문제 및 해결

- react native vision camera 관련 이슈
```bash
A problem occurred evaluating project ':react-native-vision-camera'.
> Cannot invoke method replace() on null object
```

node_modules/react-native-vision-camera/android/build.gradle 에서 337 line 의 내용을 아래와 같이 변경

이전 내용
def BOOST_VERSION = thirdPartyVersions["BOOST_VERSION"]

변경 내용
def BOOST_VERSION = "1_85_0" // thirdPartyVersions["BOOST_VERSION"]

- react native vision camera 관련 이슈

빌드시 아래와 같은 이슈 발생
Execution failed for task ':react-native-vision-camera:buildCMakeDebug[arm64-v8a]'.

android/build.gradle 파일에서

이전 내용
ndkVersion = "25.1.8937393"

변경 내용
ndkVersion = "23.2.8568313"

 

그래서 다시금 느꼈다.

 

꼭 README.md에 필요한 부분들을 적자. 만약에 3년전에 했던 사람이 이 부분에 대해서 적었으면 적어도 덜 헤딩을 했을 것 같고,

나 또한 그때 헤딩을 했던 순간에 하나씩 기록했으면 문제가 없었을텐데 기록을 안하니 이러한 사단이 일어나는 것을 보고 실감했다.

 

여담으로,

React Native 에 대한 버전을 바로 한번에 올리지 못하는 이유는 너무 핸들링 할 것이 많기도 했고 시간적 여유가 없었기에 최소한의 시간으로 할 수 있는 부분을 정하다보니 그렇게 되었다.

 

2025년에 2019년 맥북을 가지고 빌드 한번 할때마다 10분씩 소요가 되어지는데... 버전업에 대한 이슈까지 핸들링하기에는 시간자체가 말이 안되게 부족했고 또 장비가 지급해준 맥북 하나(모니터 X, 여타 장비 X)인지라 더더욱 힘들 것이라고 판단을 했기 때문이다.

+ Recent posts