UNPKG

@jiggag/react-native-kakao-maps

Version:
200 lines (170 loc) 11.3 kB
## 갑자기 문제가 생겼습니다 ### iOS 빌드가 되지 않아요 ```shell ❌ ld: symbol(s) not found for architecture x86_64 ❌ clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` <details> <summary>에러 메세지 자세히 보기</summary> ```shell Undefined symbols for architecture x86_64: "_sqlite3_bind_blob", referenced from: mapEngine::ResourceCacheDao::_updateCacheData(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::_insertCacheData(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) "_sqlite3_bind_double", referenced from: mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::_updateCacheEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::_insertCacheEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) "_sqlite3_bind_int", referenced from: mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::deleteEntitiesByType(int) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::invalidateAllEntries() in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::selectCleaningList(int, int) in DaumMap(ResourceCacheDao.o) ... "_sqlite3_bind_text", referenced from: mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::deleteEntity(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::selectCacheEntity(mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::selectCacheData(mobileToolkit::BasicString const*, mobileToolkit::BasicString*) in DaumMap(ResourceCacheDao.o) ... "_sqlite3_close", referenced from: mapCore::DiskCacheDao::_openOrCreateDB() in DaumMap(DiskCacheDao.o) mapCore::BaseSqliteDao::~BaseSqliteDao() in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::open() in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::close() in DaumMap(BaseSqliteDao.o) "_sqlite3_column_blob", referenced from: mapEngine::ResourceCacheDao::selectCacheData(mobileToolkit::BasicString const*, mobileToolkit::BasicString*) in DaumMap(ResourceCacheDao.o) "_sqlite3_column_bytes", referenced from: mapEngine::ResourceCacheDao::selectCacheData(mobileToolkit::BasicString const*, mobileToolkit::BasicString*) in DaumMap(ResourceCacheDao.o) "_sqlite3_column_double", referenced from: mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::selectCacheEntity(mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::selectCleaningList(int, int) in DaumMap(ResourceCacheDao.o) "_sqlite3_column_int", referenced from: mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::selectCacheEntity(mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) "_sqlite3_column_text", referenced from: mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::selectCacheEntity(mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::selectCleaningList(int, int) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::selectDanglingList(mobileToolkit::BasicString*) in DaumMap(ResourceCacheDao.o) "_sqlite3_errmsg", referenced from: mapCore::BaseSqliteDao::~BaseSqliteDao() in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::open() in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::_logError(char const*) in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::close() in DaumMap(BaseSqliteDao.o) mapCore::BaseSqliteDao::_logErrorOnPrepareStatement() in DaumMap(BaseSqliteDao.o) "_sqlite3_exec", referenced from: mapCore::DiskCacheDao::_openOrCreateDB() in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::_attachDatabase(mobileToolkit::BasicString const*, mobileToolkit::BasicString const*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::updateEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::insertEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::deleteEntity(mapEngine::ResourceCacheEntity const*) in DaumMap(ResourceCacheDao.o) "_sqlite3_finalize", referenced from: mapCore::DiskCacheDao::onAfterInitializeDb() in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) ... "_sqlite3_free", referenced from: mapCore::DiskCacheDao::_openOrCreateDB() in DaumMap(DiskCacheDao.o) "_sqlite3_last_insert_rowid", referenced from: mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapEngine::ResourceCacheDao::insertEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) "_sqlite3_open", referenced from: mapCore::DiskCacheDao::_openOrCreateDB() in DaumMap(DiskCacheDao.o) mapCore::BaseSqliteDao::open() in DaumMap(BaseSqliteDao.o) "_sqlite3_prepare_v2", referenced from: mapCore::DiskCacheDao::onAfterInitializeDb() in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) ... "_sqlite3_reset", referenced from: mapEngine::ResourceCacheDao::_insertCacheEntity(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) mapEngine::ResourceCacheDao::_insertCacheData(mapEngine::ResourceCacheEntity*) in DaumMap(ResourceCacheDao.o) "_sqlite3_step", referenced from: mapCore::DiskCacheDao::selectByKey(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectByType(int, bool) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::selectCleaningList(int, int) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::insertEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateEntity(mapCore::DiskCacheEntity*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::updateAccessTime(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) mapCore::DiskCacheDao::deleteEntity(mobileToolkit::BasicString const*) in DaumMap(DiskCacheDao.o) ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Undefined symbol: _sqlite3_bind_blob Undefined symbol: _sqlite3_bind_double Undefined symbol: _sqlite3_bind_int Undefined symbol: _sqlite3_bind_text Undefined symbol: _sqlite3_close Undefined symbol: _sqlite3_column_blob Undefined symbol: _sqlite3_column_bytes Undefined symbol: _sqlite3_column_double Undefined symbol: _sqlite3_column_int Undefined symbol: _sqlite3_column_text Undefined symbol: _sqlite3_errmsg Undefined symbol: _sqlite3_exec Undefined symbol: _sqlite3_finalize Undefined symbol: _sqlite3_free Undefined symbol: _sqlite3_last_insert_rowid Undefined symbol: _sqlite3_open Undefined symbol: _sqlite3_prepare_v2 Undefined symbol: _sqlite3_reset Undefined symbol: _sqlite3_step ``` </details> #### 해결방법 `Build Phases > Link Binary With Libraries > libsqlite3.tbd 추가` ------ ### iOS 빌드가 되지 않아요 ```shell ❌ ld: in /Users/jiggag/react-native-kakao-maps/example/node_modules/@jiggag/react-native-kakao-maps/ios/DaumMap.embeddedframework/DaumMap.framework/DaumMap(HashUtils.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/jiggag/react-native-kakao-maps/example/node_modules/@jiggag/react-native-kakao-maps/ios/DaumMap.embeddedframework/DaumMap.framework/DaumMap' for architecture arm64 ❌ clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` #### 해결방법 `xcode > example.xcworkspace` 열어서 빌드 ------ ### 지도가 보이지 않아요 [카카오 지도 개발자 문서](https://apis.map.kakao.com/android/guide/#step2)를 참고하여 앱 키 발급 및 키 해시를 등록해주세요 <details> <summary>안드로이드 키 해시 추출하기</summary> ```shell keytool -exportcert -alias {key_alias} -keystore {keystore_path} -storepass {store_password} -keypass {key_password} | openssl sha1 -binary | openssl base64 keytool -exportcert -alias androiddebugkey -keystore ./android/app/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 ``` </details> #### 해결방법 발급 받은 앱 키 `strings.xml > kakao_app_key` 교체 및 `앱 설정 > 플랫폼` 키 해시 등록 ------ ### 안드로이드 에뮬레이터에서 지도를 열면 앱이 크래시 발생해요 ```shell java.lang.UnsatisfiedLinkError at net.daum.mf.map.n.api.NativeMapLibraryLoader.loadLibrary(NativeMapLibraryLoader.java:39) ... ``` #### 해결방법 - 안드로이드 에뮬레이터(x86, x86_64)에서는 카카오 맵을 지원하지 않고 있습니다. ([관련 이슈 #31](https://github.com/jiggag/react-native-kakao-maps/issues/31#issuecomment-1435983575)) - 실기기를 이용해주세요.