react-native-create-library를 이용하여 리액트 네이티브 모듈 프로젝트를 생성하고 별도로 생성한 react-native 프로젝트에 이 모듈을 추가하여 테스트를 했습니다.
문제 없이 build까지 했는데 NativeModules
에 새롭게 추가한 모듈이 없었습니다.
뭔가 실수하거나 깜박한 것은 없는지 수십번을 확인했죠. 그것도 iOS에서는 되고 안드로이드에서는 안되었어요.
그래서 뭔가 차분하게 다시 보다보니 iOS Objective-C에는 제가 임의의 함수를 하나 만들어서 export했고 Android에는 아직 초기 상태 그대로입니다.
설마 이것 때문인가 싶어서 한번 소스를 살펴보다 알게 된 사실은 …
상수나 메소드를 추가하지 않은 모듈은 NativeModules에 연결되지 않습니다.
이와 관련된 코드 링크 넣어 봅니다.
위에 코드에서 알수 있듯이 상수와 메소드가 없을 경우 모듈을 정보를 가져오는 곳에서 name
만 return합니다. 그리고 있을 경우에는 다음과 같이 상수와 메소드를 module
이라는 키에 넣어 줍니다.
{
name : 'RCMyLibrary',
module: {
myMethod : ...,
MY_VALUE: ...
}
그런데 이걸 최종적으로 NativeModules
에 연결할 때 에 module이라는 내용이 안채워져 있으면(== myMethod와 MY_VALUE가 없으면) 연결되지 않아서 네이티브에는 해당 모듈이 정상적으로 연결되었더라도 JS에서는 존재하지 않는 모듈이 됩니다.
급한데로 메모로 남겨봅니다. 잘못된 내용이나 추가적으로 참고할 내용을 알게 되면 글을 수정 하겠습니다.
오늘도 즐거운 코딩하세요.