리액트 네이티브로 구성한 프로젝트 빌드를 하던 중 오류가 발생하였다.
> Task :app:compileReleaseJavaWithJavac FAILED ~~~경로/MainApplication.java:60: error: cannot find symbol ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); ^ symbol: variable ReactNativeFlipper location: class MainApplication
원인이라는 getReactNativeHost().getReactInstanceManager()); 부분을 찾아 검색하였고 0.61.5 에서 0.63.3. 으로 리액트 네이티브가 업데이트 되면서 빠졌다고 MainApplication.java 파일에 아래 코드를 추가해보라고 한다. https://stackoverflow.com/questions/65837062/react-native-android-cannot-find-symbol-class-reactinstancemanager
import com.facebook.react.ReactInstanceManager;
결과는 실패다.
비슷한 원인들을 찾다보니 이런 링크가 있었다.
https://github.com/facebook/react-native/issues/36060
위 내용들을 참고 삼아 수정한 방법은 기존에 프로젝트 폴더안에 android/app/src/release/java/com/프로젝트 이름/ReactNativeFlipper.java 를 복사가 아닌 다른 폴더로 옮기는 것이다.
프로젝트 폴더안의 /android/app/src/main/java/com/프로젝트 이름/ReactNativeFlipper.java 로 옮겼다.
이렇게 해결하니 이슈는 해결되었다.
절대 복사가 아닌 옮겨야 한다. 복사로 붙여넣으면 두개의 중첩된 클래스가 있다고 오류가 난다.
추가 : 위 상태로 디버깅 모드 빌드 했더니 이번에도 두개의 중첩된 클래스가 있다고 빌드 실패가 떴다. 확인해보니 프로젝트 폴더안의 /android/app/src/debug/java/com/프로젝트 이름/ReactNativeFlipper.java 이 있어 이 파일도 제거 후 정상 빌드되었다.