You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
2. 페이스북 sdk 오류
duplicate symbol _OBJC_CLASS_$_FBSDKTypeUtility duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)
3. 빌드하고 실행 시 Uncaught exception
4. Undefined symbols for architecture x86_64: _sqlite3_closed
5. Undefined symbols for architecture x86_64: _deflate
1. bitcode 활성화 오류
You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
현재 xcode 빌드 옵션에서 bitcode가 켜져 있는데 특정 sdk에 bitcode 적용이 안되어있어서 그렇다.
나의 경우 GA가 비트 코드가 없는 버전인데 비트코드가 있는 sdk로 교체를 해주던가 빌드 옵션에서 꺼주면 된다.
위의 sdk에서 bitcode가 있는 버전을 받아서 적용하면 정상적으로 빌드가 된다.
또는
Build Settings > Build Options > Enable Bitcode > No
요렇게 해주면 된다.
일단 빌드가 급하다면 bitcode를 끄도록 하자. 결론만 말하자면 비트코드 꺼도 상관없다.
duplicate symbol _OBJC_CLASS_$_FBSDKTypeUtility duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)
라이브러리가 겹쳐서 발생한다고 하는데 정확히 무슨 오류인지까지는 안 찾아봤고 해결하려면
Build Phases > Link Binary With Libraries 에서 FBSDKCoreKit.framework를 없애주면 잘 작동한다.
3. 빌드하고 실행 시 Uncaught exception
실행하면 gsCrashReporterUEHandler 에서 오류가 잡히는데 이 오류가 뜨면 빌드까지는 됐는데 앱 실행하고 나서 오류가 발생하는 것이다. 콘솔을 보면 GA 키값을 입력 안 했는데 이 오류가 뜨면 대부분 plist에 써드파티 sdk 키값을 입력하지 않아서 발생한다.
4. Undefined symbols for architecture x86_64: _sqlite3_closed
라이브러리 중에 sqlite와 관련된 라이브러리가 안 들어가 있어서 발생한다고 하는데 아직도 잘 모르겠는데 어느 날부터 이 오류가 안 생기기 시작했다.
Build Phases > Link Binary With Libraries > 추가
Add Other 클릭 > Cmd + Shift + G를 눌러서 경로 입력창 띄움.
/usr/lib 이동
lib 경로에서 libsqlite3.dylib 추가
라이브러리 추가해주고 빌드하면 된다.
5. Undefined symbols for architecture x86_64: _deflate
유니티에서 게임 오브젝트에 스크립트를 드래그해서 컴포넌트로 추가할 때 아래와 같은 오류 메시지가 발생
Can't add script component 'TestScript' because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match.
또는
Can't add script behaviourTestScript ,Can't Add Script The script needs to derive from MonoBehaviour!
원인
유니티를 공부하는 분이 이 에러 때문에 막히고 있어서 직접 봐보았더니 스크립트명과 스크립트의 클래스명이 달라서 생기는 문제였다.
스크립트 파일 이름과 스크립트에서 구현되어 있는 클래스의 이름이 다르면 컴포넌트로 인식을 못해서 불러오지 못한다.
해결
스크립트나 파일명을 하나로 통일한다.
위의 경우 파일명은 TestScript고 스크립트에서 클래스 이름은 Test인데 클래스 이름을 TestScript로 바꾼다.
정상적으로 처리되었다면 다음과 같이 Add Component에서 추가한 컴포넌트가 보인다.