概要
コマンドラインビルド(.ipaのビルドと作成)は機能しなくなりました。
iTunesConnectは、_CODE_SIGN_RESOURCE_RULES_PATH
_ビルド設定を使用するビルドの拒否を開始しました。
なしでビルドすると、PackageApplicationツール(署名済み.ipaの作成に使用)の設定は失敗します。
_CODE_SIGN_RESOURCE_RULES_PATH
_ビルド設定が除外されている場合でも、PackageApplicationはresource-rules引数を使用して/ usr/bin/codesignを呼び出すようです
_CODE_SIGN_RESOURCE_RULES_PATH
_ビルド設定が除外されているときに、resource-rules引数を使用して/ usr/bin/codesignを呼び出さないように、PackageApplicationを更新する必要があると思います。
誰かがこれの解決策を見つけましたか?
詳細
次のようにコマンドラインでアプリをビルドします。
_xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_Arch=NO 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
_
次のように、コマンドラインで署名済みの.ipaを作成します。
_xcrun -log -sdk iphoneos PackageApplication "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.app" -o "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.ipa" -sign "iPhone Distribution: MyTeam (XXXXXXXXXX)" -embed /Users/mpv/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
_
iTunesConnectは現在、次のエラーでビルドを拒否しています。
「このバンドルは無効です。Info.plistのバンドルmyApp [myApp.app]に無効なキー「CFBundleResourceSpecification」が含まれています。」
ビルドコマンドから'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
ビットを削除すると、アプリはCFBundleResourceSpecification
plistキーなしでビルドされます(これは私たちが望むものです)。新しいビルドコマンドは次のようになります。
_xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_Arch=NO
_
問題は、.ipaをビルドするコマンドが次のエラーで失敗することです。
エラー:/ usr/bin/codesign --force --preserve-metadata = identifier、entitlements、resource-rules --sign iPhone配布:MyTeam(XXXXXXXXXX)--resource-rules =/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T /zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist --entitlements/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/entitlements_plistIUdGWLYe/var/folders/2b/7hylk7000013kwnjnpqnrjtr/myr/yprnjtgr/my/unload/unloaded 1.出力:警告:オプション "resource-rules"で--preserve-metadataを使用(Mac OS X> = 10.10で非推奨)!
警告:--resource-rulesはMac OS X> = 10.10で廃止されました! /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist:リソースを読み取れません
_CODE_SIGN_RESOURCE_RULES_PATH
_引数/ビルド設定が除外されている場合でも、PackageApplicationはresource-rules引数を使用して/ usr/bin/codesignを呼び出すようです。
_CODE_SIGN_RESOURCE_RULES_PATH
_引数/ビルド設定が除外されている場合、Resource-rules引数で/ usr/bin/codesignを呼び出さないように、PackageApplicationを更新する必要があると思います。
Appleは解決策を教えてくれました。 Xcode 7では、xcodebuild
の代わりにPackageApplication
を使用して.ipaファイルを生成する必要があります。
xcodebuildには、Xcodeオーガナイザーのように機能する.ipaを作成するための新しい-exportArchiveオプションがあります。
だから私たちは今すべきです:
xcodebuild archive
でアーカイブを構築しますxcodebuild -exportArchive
で.ipaを作成しますこのようにアーカイブを作成します:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/myApp.xcarchive
このように.ipaをエクスポートするようになりました:
xcodebuild -exportArchive -archivePath $PWD/build/myApp.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
これらの2つのコマンドは、build/myApp.xcarchive
およびbuild/myApp.ipa
ファイルを作成します
xcodebuild -exportArchive
には、エクスポートオプション付きの.plistファイルを指す-exportOptionsPlist
引数が必要であることに注意してください。そのplistに含めることができるものの完全なリストについては、xcodebuild -help
を実行してください。ファイルの最小限の内容は次のようになります。
<?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>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOUR_TEN_CHARACTER_TEAM_ID</string>
</dict>
</plist>
Xcode 9では、exportOptions.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>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>my.bundle.idenifier</key>
<string>My Provisioning Profile Name</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
IPA Usigターミナルを作成する手順
クリーンプロジェクト:
リリース
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration ReleaseAdhoc -alltargets
デバッグ
xcodebuild clean -project ProjectPath/myApp.xcodeproj -configuration Debug -alltargets
プロジェクトのアーカイブ:
デバッグ
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -configuration Debug -archivePath pathForArchiveFolder/myApp.xcarchive
リリース
xcodebuild archive -project ProjectPath/myApp.xcodeproj -scheme “myApp” -archivePath pathForArchiveFolder/myApp.xcarchive
IPAのエクスポート
以前のバージョン:これにより、署名されたリソースが追加、変更、または削除されました。エラー
xcodebuild -exportArchive -archivePath projectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportFormat ipa -exportProvisioningProfile “provisioning profile”
新しいバージョン:
xcodebuild -exportArchive -archivePath ProjectPath/myapp.xcarchive -exportPath projectPath/myApp.ipa -exportOptionsPlist ProjectFolder/exportPlist.plist
ビルドプロセス(おそらくJenkins)の一部としてexportOptions.plistファイルを作成する必要がある場合の簡単なヒントを次に示します。
plutil
ツールを使用して、JSONをplistに変換できます。例:
echo "{\"method\":\"app-store\"}" | plutil -convert xml1 -o /tmp/exportOptions.plist -- -
楽しい!
プロジェクトフォルダに移動します。
アーカイブ:
デバッグ用:
xcrun xcodebuild -scheme MyApp -configuration Debug archive -archivePath build/MyApp.xcarchive
リリース用:
xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive
IPAの取得:
xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/
プロジェクト名myFirstAppを作成しました。プロジェクトの場所はDesktop/myFirstAppです。 Xcode
8.3
でテスト済み
ステップ1-
cd /Users/Ved/Desktop/myFirstApp/
ステップ2-
xcodebuild -scheme myFirstApp archive \
-archivePath /Users/Ved/Desktop/myFirstApp.xcarchive
ステップ3-
xcodebuild -exportArchive -exportFormat ipa \
-archivePath "/Users/Ved/Desktop/myFirstApp.xcarchive" \
-exportPath "/Users/Ved/Desktop/myFirstApp.ipa" \
-exportProvisioningProfile "myFirstAppDevProfile"