objective-c - xcodebuild로 CocoaPods 중간 파일 빌드 실패

기사 출처 objective-c xcode5 cocoapods xcodebuild libtool

CocoaPods 프로젝트에서 xcodebuild를 사용하려고하는데 문제가 발생했습니다. 나는 뛰고있어:

xcodebuild -workspace 'MyWorkspace.xcworkspace' -scheme DefaultScheme -configuration Release CODE_SIGN_IDENTITY="Distribution Profile" PRODUCT_NAME="MyProduct"


다음과 같은 오류가 발생합니다.

The following build commands failed:
    Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7s/libsupport.a normal armv7s
    Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/arm64/libsupport.a normal arm64
    Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/libsupport.a normal armv7


빌드는 xcode에서 잘 작동합니다. 나는 이것을 죽을 때까지 검색했지만 아직 해결책을 찾지 못했습니다. 누구나 아이디어가 있습니까?

편집 : 또한 모든 포드에 대해 다음과 같은 두 줄을 얻습니다.

error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lPods-AFNetworking
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lPods-AFNetworking is not an object file (not allowed in a library)


두 번째 편집 : PRODUCT_NAME 인수를 생략하면 완벽하게 작동합니다. 무슨 일이야?
나는 같은 문제가 있고 문제에 대한 근본 원인을 찾았습니다.

환경 : Xcode 6.1 (6A1052c), OSX 10.10 (14A389) 및 CocoaLumberjack 용 CocoaPods 사용.

문제

그 원인은 PRODUCT_NAME 속성이 빌드 된 * .app뿐만 아니라 CocoaPods의 라이브러리 * .a 파일에도 영향을 미치기 때문입니다.

내 시나리오에서는 제품 이름이 다르고 이미지 리소스 및 설정이 약간 다른 여러 * .app 파일을 빌드해야합니다. 따라서 클릭 한 번으로 프로세스를 트리거 할 수있는 빌드 스크립트에 다른 * .app 파일을 빌드하고 싶습니다.

다음 명령에서 * .xcworkspace를 사용하여 xcodebuild의 옵션에 PRODUCT_NAME을 설정하면 다음과 같은 일이 발생합니다.

xcodebuild -workspace $PROJECT_NAME.xcworkspace \
           -scheme $PROJECT_NAME \
           -configuration Distribution \
           CONFIGURATION_BUILD_DIR=$PROJECT_SRC/build \
           PRODUCT_NAME=$NEW_PRODUCT_NAME build



xcodebuild에서 $ NEW_PRODUCT_NAME.app 빌드
xcodebuild는 이름이 $ NEW_PRODUCT_NAME.a 인 CocoaPods의 * .a libray 파일을 빌드합니다.이 파일은 libPods-CocoaLumberjack.a 및 libPods.a 여야합니다.

링커 단계에서 프로젝트 설정은 -lPods 및 -lPods-CocoaLumberjack 속성으로 라이브러리와의 연결을 요청합니다 (시나리오에서는 -lPods-AFNetworking 연결에 실패했습니다).
라이브러리 파일도 PRODUCT_NAME 속성의 영향을 받기 때문에 링커는 * .a 파일을 찾을 수 없습니다.

빌드 실패


내 솔루션

마지막으로, 내 솔루션은 프로젝트와 CocoaPods 라이브러리를 별도로 빌드하는 것입니다.


프로젝트의 src 폴더
다음 명령으로 CocoaPods 라이브러리 빌드

xcodebuild -project Pods/Pods.xcodeproj build

다음 명령으로 프로젝트를 빌드하고 CocoaPods 및 기타 필요한 라이브러리를 검색 경로에 추가하십시오 (필요한 모든 라이브러리를 포함하는 것을 잊지 마십시오).

xcodebuild -project $(TARGET_PROJ) \
           -configuration Distribution \
           -target $(TARGET_TAR) \
           PRODUCT_NAME=$(NEW_PRODUCT_NAME) \
           LIBRARY_SEARCH_PATHS="./Pods/build/Release-iphoneos $OTHER_PATH" 

짓다!


이들은 동일한 바이너리에 대한 원 클릭 빌드 스크립트를 갖도록 작동하지만 일부는 다릅니다.
이미지 및 설정. 이것이 같은 문제를 가진 사람에게 도움이되기를 바랍니다.

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/23136519/

관련 기사
ios - iAd에 광고가 표시되지 않음
ios - Parse.com 저장 이미지 IOS
ios - NSException 유형의 포착되지 않은 예외로 인해로드 종료시 앱 충돌
ios - Windows 8에 Xcode를 설치하는 방법은 무엇입니까? [복제]
ios - iOS7 : 백그라운드 작업 ( "myapp"에 허용 된 시간을 초과하는 활성 어설 션이 있음)
ios - 'NSInvalidArgumentException', 이유 : '***-[NSURL initFileURLWithPath :] : nil string parameter'
ios - 핵심 데이터 / SQLite 데이터베이스를 앱에 다운로드 하시겠습니까?
ios - Apple의 ToDoList 앱 튜토리얼을 살펴보면 항목을 탭해도 "완료된"체크 표시가 제대로 추가되지 않습니다.
ios - RestKit : 빈 response.body를 처리하는 방법?
objective-c - NSURLSessionDataTask가 의심스럽게 느리게 작동합니다.