Android 개발 후, IOS 테스트를 진행하던 중 RNreanimated에서 빌드 실패가 발생했다.
에러 내용은
argument has type const but function is not marked const
해당 type 은
(if REACT_NATIVE_MINOR_VERSION >= 72) 조건에 따라
const 선언이 추가되어 있었고, function 에는 const 선언이 없었다.
1) const를 추가해 파일을 수정해도 다시 빌드 에러가 발생했다.
2) 캐시 삭제 방법을 찾고 새로 빌드를 진행하니 성공했다.
const 수정을 위해 hermes-engine 라이브러리 파일 접근시, 파일 수정 잠금에 대한 알림이 있었다. 때문에 실제 수정한 파일이 반영되어 빌드가 성공한 것인지 의심이 들었다.
1) 파일 수정이 반영되어 빌드를 성공한 것인지.
2) 처음부터 다른 버전의 파일이 남아 있어 빌드에 실패했었던 것인지.
실제로 reanimated는 Bottom Sheet의 라이브러리를 바꾸면서 버전을 한번 바꿨었다.
(hermes-engine/destroot/include/jsi/jsi.h)
사용하고 있는 버전의 파일을 깃허브에서 직접 확인해보니 정상적으로 const가 포함되어 있었다. 이미 반영되어 있는 것으로 보아 하위버전의 파일이 남아 있었던건가 싶었다.
reanimated의 버전은 다시 바꿔보면 빌드 에러가 나지 않을까 했는데, 재현이 생각보다 쉽지 않았다. 우선은 커밋을 하고 또다시 빌드에러가 발생하면 그때 다시 확인해야겠다.
RNreanimated 라이브러리에서 에러가 발생했는데 수정 파일은 hermes-engines 라이브러리에 있어, hermes-engines에 대해 알아 보았다.
hermes 엔진
헤더파일 : 프레임워크의 메소드와 라이브러리의 함수 선언 등이 포함된 파일
XCode 에서는 IOS 실행만 하다보니 모르는 부분들이 많았다. hermes 도 단어 자체는 눈에 익은데 정확히 어떤 역할을 하는지 알지 못했고, .h 파일은 수정을 해도 되는건지 조심스러웠다. 빌드에러가 난 덕분에 hermes를 더 알게 되었고, 헤더파일은 C++로 봤던 확장자명인것을 알았다.