IPAのビルド中のXcode 6.1エラー


140

今日Xcode 6.1にアップグレードしましたが、何を推測しますか?TestFlightデスクトップアプリを使用してビルドを送信できません。アプリがIPAの構築を開始しているときに発生するエラーは次のとおりです。

エラー

エラー:/ usr / bin / codesign --force --preserve-metadata = identifier、entitlements、resource-rules --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では、すべて問題なく動作しました。
ダニエル・マルティン

回答:


312

それがなぜ機能するの知っていればいいのですが、ここで私のために働いた修正があります:

修正を見つけました!

プロジェクトをクリック>ターゲット>ターゲットを選択>ビルド設定>

Code Signing Resource Rules Path

そして追加:

$(SDKROOT)/ResourceRules.plist


7
ありがとう!率直に言って、なぜそれが機能するかは気にしません:)過去2か月の間にAppleがねじ込みの大規模な流れで破った最新のものにすぎません。とにかく、解決策を指摘してくれてありがとう。(徹底的に投稿する前にエラーを見ていない私のためにと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ビルドはそれなしで動作します。Appstoreもビルドします。

/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用のPythonアプリをビルドするようになりました
Ian Ellis

すばらしい修正です!おかげでたくさん:)上記の「コード署名リソースルールパス」設定は私の問題を修正しませんでしたが、この回答は修正しました。さらに、修正はすべてのプロジェクトにわたってグローバルです:)
Pellet

@IanEllis:PackageApplicationから「resource-rules」パラメーターを削除した方法を教えてください。大変助かります!!
Rashmi Ranjan mallick 2015年

8
PackageApplicationを修正するためのワンライナーを以下に示します。perl -p -i'Orig '-e' BEGIN {undef $ /;} s /、resource-rules(。* sign})。* ResourceRules.plist "/ $ 1 / smg '" / Applications / Xcode6.1.1.app / Contents / Developer / Platforms / iPhoneOS.platform / 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 Webサイトを使用してアップロードしてください。

推奨される回避策は機能しました。


1
Xcodeで.ipaを作成し、デスクトップアプリからアップロードするだけでうまくいきました。
livingtech 2014年

@livingtechええ、しかし、私は恐ろしい「Xcodeが希望するプロファイルを選択するのではなく、新しいプロファイルを生成する」というバグも手に入れました-バグ:) testflightを使用したアップロードは、直接機能しました。
helmesjo 2014

10

答えティムGostonyによっては、もはやリソースルールが存在する場合、Xcodeの7のリリースは今すぐ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コマンドで確認できます。


ウラジミールのおかげで、Xcode 7のサブミッションとどのように競合するかについて、私は本当に混乱していました。
kevinl 2015

どのように正確にxcrunを置き換えますか?Jenkins Xcodeプラグインでその設定を確認できません:(
Hlung

2

XCode 6.4を搭載したYosemiteでは、SDKROOTパッチを使用していてもコード署名が失敗します。次の記事では、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.