Xcode로 빌드를 하다보면 각종 라이브러리 관련 error로 빌드 실패하는 경우가 상당히 많이있습니다. 

이는 보통 골칫거리가 아닐텐데요. CocoaPods 를 이용하면 라이브러리들을 쉽게 설치하고 관리할 수 있습니다.

이번 시간에는 Xcode에 CocoaPods를 설치하고 CocoaPods로 필요한 라이브러리들을 다운받아보도록 하겠습니다.


먼저, CocoaPods를 설치 할 Xcode 프로젝트를 준비합니다. 

제가 준비한 프로젝트 이름은 "CocoaPodsExample" 입니다.



그 다음 터미널을 실행시켜서 준비한 프로젝트가 있는 경로로 이동합니다.

(위 에서 3번째 줄에 cd CocoaPodsExample 한 것처럼 해당 프로젝트 폴더 안까지 이동하라는 뜻)

이동했다면 다음 명령어를 입력해줍니다.


명령어 : sudo gem install cocoapods 


그 다음 Password를(본인 컴퓨터의 비밀번호) 입력하면 자동으로 다운로드 받습니다.



1 gem installed 라는 메시지와 함께 

cocoapods 다운로드가 완료된 모습을 볼 수 있습니다.



이제 다운로드 받은 cocoapods 를 설치할 차례입니다.

다음 명령어를 입력합니다.


명령어 : pod setup


잠시 후 Setup completed 라는 메시지와 함께 설치가 완료됩니다.



본격적으로 라이브러리를 다운로드하기 위해서는 "podfile" 이라는 설정파일이 필요합니다.

podfile을 생성하기 위해 다음 명령어를 입력합니다.


명령어 : touch podfile



프로젝트 위치로 가보면 podfile 이 생성된 것을 확인할 수 있습니다.



이제 설정파일에 다운로드할 라이브러리 정보를 작성하기 위해 podfile 을 열어줍니다.


명령어 : open -e podfile


물론 podfile 을 더블클릭하여 직접 열어줘도 무방합니다만

간혹 시스템 설정에 따라 직접 열기가 안되는 경우가 있는데 그런 경우 위 명령어를 입력해서 열어주세요.



저는 프로젝트에 Firebase, AdMob, GooglePlayGames 를 연동하려했기 때문에 

필요한 라이브러리를 위와 같이 작성해주었습니다.


만약 ABCDEFG 라는 라이브러리가 필요하다면

대신에 pod 'ABCDEFG' 라고 작성해주면 됩니다.



podfile에 라이브러리 작성을 끝냈다면

작성한 라이브러리를 정말로 다운받기 위해 다음 명령어를 실행해줍니다.


명령어 : pod install



관련 라이브러리들이 다운로드된 모습입니다.

그리고 프로젝트 위치에 ~.xcworkspace 라는 파일이 새로 생성됩니다!



* 여기서 주의할 점!!!


- 혹시 CocoaPods 설치 진행 중에 Xcode 프로젝트가 열려있었다면 완전히 닫아줍니다.

- 앞으로는 ~.xcodeproj 파일 대신에 새로 생성된 ~.xcworkspace 라는 파일로 프로젝트를 열어줍니다. 무조건!


그래야 CocoaPods 로 다운로드한 라이브러리들이 정상적으로 적용됩니다.




XCode 빌드 시


Use of '@import' when modules are disabled


위와 같은 에러가 발생할 때 해결 방법!





- [Build Settings] 으로 이동


- modules 검색


- Enable Modules (C and Objectivce-C) 옵션을 No 에서 Yes 로 변경



끝 입니다 ^^




Google Mobile Ads SDK (구글 애드몹) 를 사용하는 프로젝트를 XCode에서 빌드할 때


No visible @interface for 'GADUNativeCustomTemplateAd' declares the selector 'performClickOnAssetWithKey:customClickHandler:'


이런 에러가 발생한다면!?



GADUNativeCustomTemplateAd.h 파일로 이동합니다.


*nativeCustomTemplateAd 선언 부를 찾습니다.


@property(nonatomic, strong) GADUNativeCustomTemplateAd *nativeCustomTemplateAd;

위와 같이 되어있는 부분을


@property(nonatomic, strong) GADNativeCustomTemplateAd *nativeCustomTemplateAd;

이렇게 수정합니다. (GADU... -> GAD...)





다시 빌드하면 에러가 사라졌을 것입니다!



유니티 프로젝트를 XCode로 빌드하고 app을 Run 했을 때


Terminating app due to uncaught exception 'NSUnknownKeyException' 


와 같은 에러와 함께 app이 멈추는 현상이 발생한다면,


XCode에서 UnityViewControllerBase를 검색.




UnityViewControllerBaseiOS.mm 에서


NSAssert(UnityShouldAutorotate(), @"UnityDefaultViewController should be used only if unity is set to autorotate");


이 부분을 주석처리하세요.



그 이후엔 문제없이 잘 돌아갔습니다.




유니티 프로젝트를 XCode로 빌드 시


엄청난 로그와 함께


ld: library not found for -lPods-Unity-iPhone

clang: error: linker command failed with exit code 1 (use -v to see invocation)


이런 에러가 발생한다면,


Unity-iPhone과

Pods의




Build Settings -> Architectures 의 모든 항목들이 일치하는지 확인해보시기 바랍니다.



저 같은 경우에는 Pods의 Architectures -> Architectures 항목이 서로 다르게 설정되어있었는데

일치시키고 다시 시도하니 빌드 성공했습니다.


매우 간단한 문제였는데 너무 오래 헤맸네요.



XCode에서 iOS App을 Archive 후 Upload to App Store 할 때,


(ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format .")


이와 같은 에러로 인해 업로드 실패하는 경우가 생긴다면


해결 방법!




저기 iPad Pro App iOS 9 83.5pt 부분이 비어있을텐데

167x167 짜리 App Icon을 하나 만드셔서 저 부분에 드래그 & 드랍 해주시면 됩니다!



최근에 Apple에서 출시한 iPad Pro 때문에 생긴 문제같네요.





XCode로 디바이스에 Build & Run 시에


process launch failed: failed to get the task for process 915


와 같은 에러가 발생한다면


Project -> Build Settings -> Code Signing -> Code Signing Identify -> Release 항목을


Developer 용으로 변경하면 해결됩니다.



출처 : http://dev.tapjoy.com/ko/faq/unexpected-cfbundleexecutable-key-ios-submission-error/



"Unexpected CFBundleExecutable Key" iOS submission error

"Unexpected CFBundleExecutable Key" 혹은 "Unexpected CFBundleSupportedPlatforms value"

저희는 최근 애플 앱스토어에 앱을 제출함에 있어서 다음과 같은(혹은 유사한) 에러 메시지와 함께 앱이 리젝트 되는 경우가 있다는 리포트를 받았습니다.:

Screen Shot 2015-09-15 at 5.09.44 PM

이것을 대응하기 위해서는 다음을 따라 수정해주세요.:

다음과 같이 수동으로 Info.plist가 여러분의 TapjoyResources.bundle을 포함하게 해주세요.:


Set the following key:

CFBundleSupportedPlatforms = iPhoneOS

And REMOVE the following key entirely:

Executable file

만일 여러분이 Adobe AIR를 사용하고 계신다면, ANE 파일을 언팩하셔서, 위의 나온대로 수정하시고, 다시 ANE 파일을 패킹해 주세요. 이 작업을 위해서는 다음의 안내를 따라주세요.:

  1. unzip TapjoyExtension.ane -d temp
  2. Modify TapjoyResources.bundle found at temp/META-INF/ANE/iPhone-ARM/Tapjoy.embeddedframework/Resources/ as explained above.
  3. cd temp/META-INF/ANE/
  4. mv iPhone-ARM/platform.xml ios_platform.xml
  5. mv Android-ARM/platform.xml android_platform.xml
  6. <air_sdk_home>/bin/adt -package -target ane ../../../TapjoyExtension.ane extension.xml -swc ../../../TapjoyExtension.swc -platform iPhone-ARM -C iPhone-ARM -platformoptions ios_platform.xml . -platform Android-ARM -C Android-ARM -platformoptions android_platform.xml . -platform default -C default library.swf


+ Recent posts