programing

IPA 구축 중 Xcode 6.1 오류 해결 방법

telebox 2023. 5. 17. 22:46
반응형

IPA 구축 중 Xcode 6.1 오류 해결 방법

오늘 Xcode 6.1로 업그레이드되었으며, 다음과 같은 이점이 있습니다.지금은 TestFlight 데스크톱 앱을 사용하여 빌드를 제출하는 데 문제가 있습니다.앱이 IPA 구축을 시작하는 동안 발생하는 오류는 다음과 같습니다.

오류

오류: /usr/bin/codesign --force --force --force --force --force-codice= 식별자, 요소, resource-scription --sign 854059d45eed724593debef577a562e1ba96ab55 --resource-rules=/tmp/QYFS JIvu7W/Payload/XX.app/ResourceRules.plist/tmp/QYFSJivu7W/Payload/XX.app이 오류 1로 실패했습니다.출력:경고: "resource-property" 옵션을 사용한 --property-property 사용(Mac OS X > = 10.10에서 사용되지 않음)!경고: --resource-vlan은 Mac OS X > = 10.10! /tmp/Q에서 더 이상 사용되지 않습니다.YFSJivu7W/Payload/XX.app/ResourceRules.plist: 리소스를 읽을 수 없습니다.

'지원 기사'는 무슨 일이 일어나고 있는지 전혀 알지 못합니다.

Jenkins와 같은 CI 환경에서 xcrun 또는 유사한 도구를 사용하는 경우에도 동일한 현상이 발생하므로 TestFlight 문제는 아닌 것 같습니다.

앱이 몇 달 동안 업데이트되지 않았기 때문에 이 문제를 해결할 수 있는 업데이트를 기대해서는 안 된다는 것을 알고 있습니다.예전에는 저와 제 고객들에게 잘 먹혔기 때문에 다른 일을 위해 그것을 포기하고 싶지도 않습니다.

이 오류가 무엇에 관한 것인지, 어떻게 해결할 것인지에 대한 아이디어가 있으면 매우 감사하겠습니다.

왜 효과가 있는지 알고 싶지만, 여기 저에게 효과가 있었던 해결책이 있습니다.

해결책을 찾았습니다!

프로젝트 클릭 > 대상 > 대상 선택 > 빌드 설정 >

Code Signing Resource Rules Path

추가:

$(SDKROOT)/ResourceRules.plist

다음 PackageApplications용 패치가 수정되었습니다. 10.10에서 더 이상 사용되지 않는다는 리소스 규칙을 제거했습니다.

시험 비행은 그것 없이 일을 만듭니다.앱스토어도 구축됩니다.

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
 % diff PackageApplication PackageApplicationFixed 
155,157c155,156
<     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
<                          "--sign", $opt{sign},
<                          "--resource-rules=$destApp/ResourceRules.plist");
---
>     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
>                          "--sign", $opt{sign});

TestFlight 지원팀에 이메일을 보내 다음과 같은 답변을 받았습니다.

우리 팀은 현재 TestFlight Desktop 앱으로 이 문제를 조사하고 있습니다.그 동안 Xcode를 사용하여 IPA 파일을 생성한 후 데스크톱 앱 또는 TestFlight 웹사이트를 사용하여 업로드하십시오.

제안된 해결 방법이 효과적이었습니다.

팀 고스토니의 답변은 Xcode 7 출시 이후 더 이상 작동하지 않습니다.이제 리소스 규칙이 있으면 App Store 제출 프로세스가 실패합니다.해결책은 코드 서명 리소스 규칙 경로를 지우고 xcrun을 xcodebuild 도구로 바꾸는 것입니다.

xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file]

가장 간단한 옵션입니다.애드혹 배포 ipa 파일을 내보내기 위한 plist는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>iCloudContainerEnvironment</key>
    <string>Production</string>
    <key>teamID</key>
    <string>[YOUR TEAM ID]</string>
    <key>method</key>
    <string>ad-hoc</string>
</dict>
</plist>

이 plist 파일에 대해 비트코드, 앱 박형 등과 관련하여 사용 가능한 다른 옵션이 있습니다.그래서 저는 xcodebuild 툴이 iOS 9 이상의 ipa 파일을 내보낼 수 있는 올바른 도구라고 생각합니다.

옵션 목록에 대한 자세한 내용은 xcodebuild -help 명령을 사용하여 확인할 수 있습니다.

XCode 6.4가 설치된 Yosemite에서는 SDKROOT 패치를 사용해도 코드 서명이 실패합니다.다음 문서에서는 이 문제를 해결하기 위해 XCode 스크립트를 패치하는 방법을 설명합니다.이는 XCode 패치이므로 버전별로 다르지만 문제를 해결합니다.

http://www.jayway.com/2015/05/21/fixing-your-ios-build-scripts

Alistra의 답변은 나에게 효과가 있지만 내 것이 아닌 스크립트를 변경하고 싶지 않습니다(향후 Xcode 릴리스에서 이 파일이 변경될 수 있으며 수정 내용이 손실될 것입니다).

 diff PackageApplication PackageApplicationFixed 155,157c155,156
<-     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
<-                          "--sign", $opt{sign},
<-                          "--resource-rules=$destApp/ResourceRules.plist");
---
->     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
->                          "--sign", $opt{sign});

Vladimir Grigorov의 답변은 다음을 사용하는 보관소가 있는 경우가 가장 좋다고 생각합니다.

xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file]

저의 경우, 애플리케이션을 빌드한 후 수정하고 번들 ID와 서명 인증서를 변경해야 하기 때문에 아카이브가 없습니다.

내가 찾은 해결책은 전화하는 것입니다.codesign사용하기 전의 나 자신PackageApplication그리고 묻습니다.PackageApplication서명하지 않는 것.다음과 같이:

replace :

 /usr/bin/xcrun -sdk iphoneos PackageApplication -v "<app_path>" -o "<ipa_path>" --sign "<provisioning_profile.certificateSubject>" --embed "<provisioning_profile.path>"

by :

/bin/cp -rpfv "<provisioning_profile.path>" "<app_path>/embedded.mobileprovision"
/usr/bin/codesign -v -vvvv -f -s "<provisioning_profile.certificateSubject>" --entitlements="<entitlement_path>" "<app_path>"
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "<app_path>" -o "<ipa_path>"

다음을 포함하는 것을 잊지 마십시오..mobileprovision하여 서파:에로 서명cp.

다른 답변에 지정된 대로 서명할 배포 인증서를 지정하지 않을 수도 있습니다. 그러면 인증서가 올바르게 패키징됩니다.TestFlight는 이를 위해 앱을 업데이트해야 합니다.

언급URL : https://stackoverflow.com/questions/26497863/how-to-fix-xcode-6-1-error-while-building-ipa

반응형