web-dev-qa-db-ja.com

iOSビルド/ ipa作成はコマンドラインから機能しなくなりました

概要

コマンドラインビルド(.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を更新する必要があると思います。

33
Mike Vosseller

Appleは解決策を教えてくれました。 Xcode 7では、xcodebuildの代わりにPackageApplicationを使用して.ipaファイルを生成する必要があります。

xcodebuildには、Xcodeオーガナイザーのように機能する.ipaを作成するための新しい-exportArchiveオプションがあります。

だから私たちは今すべきです:

  1. xcodebuild archiveでアーカイブを構築します
  2. 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>&lt;none&gt;</string>
</dict>
</plist> 
103
Mike Vosseller

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
13
Devesh

ビルドプロセス(おそらくJenkins)の一部としてexportOptions.plistファイルを作成する必要がある場合の簡単なヒントを次に示します。

plutilツールを使用して、JSONをplistに変換できます。例:

echo "{\"method\":\"app-store\"}" | plutil -convert xml1 -o /tmp/exportOptions.plist -- -

楽しい!

2

プロジェクトフォルダに移動します。

アーカイブ:

デバッグ用:

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/
1
Devesh

プロジェクト名myFirstAppを作成しました。プロジェクトの場所はDesktop/myFirstAppです。 Xcode8.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"
0
Ved Rauniyar