IPA 빌드 중 Xcode 6.1 오류


140

오늘 Xcode 6.1로 업그레이드하여 다음을 추측하십시오. 이제 TestFlight 데스크탑 앱을 사용하여 빌드를 제출하는 데 문제가 있습니다. 앱이 IPA 빌드를 시작하는 동안 발생하는 오류는 다음과 같습니다.

오류

오류 : / usr / bin / codesign --force --preserve-metadata = 식별자, 권한, 리소스 규칙 --sign 854059d45eed724593debef577a562e1ba96ab55 --resource-rules = / tmp / QYFSJIvu7W / Payload / XX.app / ResourceRules.plist / tmp /QYFSJIvu7W/Payload/XX.app가 오류 1과 함께 실패했습니다. 출력 : 경고 : 옵션 "resource-rules"와 함께 --preserve-metadata를 사용합니다 (Mac OS X> = 10.10에서는 더 이상 사용되지 않음)! 경고 : --resource-rules는 Mac OS X> = 10.10에서 더 이상 사용되지 않습니다! /tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist : 자원을 읽을 수 없습니다

'지원 기사'는 무슨 일이 일어나고 있는지 전혀 모릅니다.

xcrun 또는 유사한 도구를 사용하는 Jenkins와 같은 CI 환경에서 동일한 문제가 발생하기 때문에 TestFlight 문제가 아닌 것 같습니다.

앱은 몇 달 동안 업데이트되지 않았으므로 곧 업데이트를 기대하지 않아도됩니다. 그것은 나와 저의 고객들에게 정말 효과가 있었기 때문에 다른 것을 위해 그것을 포기하는 데 정말로 열중하지 않았습니다.

이 오류에 대한 아이디어와 해결 방법은 매우 감사하겠습니다.


4
다음과 같이 xcrun 명령을 사용하여 CI 환경에서 동일한 문제가 발생하므로 TestFlight 문제가 아닌 것 같습니다 xcrun -sdk iphoneos PackageApplication -v <Path_to_App> -o <Path_to_IPA> --sign <Distribution_certificate> --embed <Provisioning_profile>. Xcode 6.0.1에서는 모두 정상적으로 작동했습니다.
Daniel Martín

답변:


312

그것이 효과 가 있는지 알고 싶지만 여기 에 나에게 맞는 해결책 이 있습니다.

수정을 찾았습니다!

프로젝트> 대상> 대상 선택> 빌드 설정>을 클릭하십시오.

Code Signing Resource Rules Path

추가 :

$(SDKROOT)/ResourceRules.plist


7
감사! 솔직히 나는 그것이 왜 효과가 있는지는 신경 쓰지 않습니다. :) 지난 몇 달 동안 애플이 끔찍한 조업으로 돌파 한 최신작. 어쨌든 솔루션을 지적 해 주셔서 감사합니다. (그리고 나를 위해 downvote 철저하게 게시하기 전에 오류를보고 있지 용)
Şafak 게셀

10
CODE_SIGN_RESOURCE_RULES_PATH는 스크립트 또는 명령 줄을 통해 xcodeproj 설정을 편집하는 경우 변수 이름입니다. developer.apple.com/library/ios/recipes/…
roblocop

5
Code Signing Resource Rules Path빌드 설정에서 볼 수 없습니다 . 어떤 생각?
Georg

7
기본 설정이 아닌 모두를 선택했는지 확인하십시오 ( "일반, 기능, 정보, 빌드 설정 등"아래 행)
AS

분명히이 앱은 거부 얻을 것이다 : stackoverflow.com/questions/26488077/...
글렌 메이 나드에게

61

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

Testflight는 그것없이 작동합니다. 앱 스토어도 빌드합니다.

/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});

PackageApplication에서 불량되지 않는 매개 변수를 제거하고, buildozer 이제 iOS 용 내 파이썬 응용 프로그램을 빌드
이안 엘리스

대박! 고마워요 :) 위의 "코드 서명 리소스 규칙 경로"설정으로 문제가 해결되지 않았지만이 답변은 모든 프로젝트에서 전역 적으로 적용됩니다. :)
Pellet

@IanEllis : PackageApplication에서 "resource-rules"매개 변수를 어떻게 제거했는지 알려주십시오. 큰 도움이 될 것입니다 !!
Rashmi Ranjan mallick

8
다음은 PackageApplication을 수정하는 oneliner입니다. perl -p -i'Orig '-e'BEGIN {undef $ /;} s /, resource-rules (. * sign}). * ResourceRules.plist "/ $ 1 / smg '"/ Applications / Xcode6.1.1.app / Contents / Developer / Platforms / iPhoneOS.platforms / Developer / usr / bin / PackageApplication "(경로 조정) 그리고 이것을 적용하는 전체 스크립트 : bitbucket.org/WeWantToKnow/xcode_scripts/raw/… 사용 방법 : xcode_fix_PackageApplicationResourceRules.sh /Applications/Xcode6.1.1.app
coffeebreaks

이것이 정답입니다. 빌드 설정 응답은 사용되지 않는 API를 강제로 사용합니다.
Jameson

10

TestFlight 지원 이메일을 보냈으며 다음과 같은 응답을 받았습니다.

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

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


1
Xcode로 .ipa를 만들고 데스크톱 앱을 통해 업로드하는 것이 효과적이었습니다.
livingtech

@livingtech 예, 그러나 나는 또한 "원하는 프로파일을 선택하는 대신 새로운 프로파일을 생성하는 Xcode"라는 버그를 겪었습니다.
helmesjo

10

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

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

임시 배포 ipa 파일을 내보내는 가장 간단한 Options.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 파일을 내보내는 데 적합한 도구라고 생각합니다.

옵션 plist에 대한 자세한 내용은 xcodebuild -help 명령을 통해 사용할 수 있습니다.


Vladimir 덕분에 Xcode 7 제출과 충돌하는 방식에 대해 혼란스러워했습니다.
kevinl

xcrun을 정확히 어떻게 대체합니까? Jenkins Xcode 플러그인에서 해당 설정을 볼 수 없습니다 :(
Hlung

2

SDKROOT 패치를 사용해도 XCode 6.4가있는 Yosemite에서는 공동 디자인이 실패합니다. 다음 기사에서는이 문제를 해결하기 위해 XCode 스크립트를 패치하는 방법에 대해 설명합니다. 이것은 XCode를 패치하는 것이므로 버전마다 다르지만 문제를 해결합니다.

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


1

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});

내가 생각하는 대답 은 사용 아카이브가있는 경우 블라디미르 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.


0

다른 답변에 지정된대로 서명 할 배포 인증서 만 지정할 수 없으며 올바르게 패키지됩니다. 이를 위해 TestFlight는 앱을 업데이트해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.