xcodeでArchiveしようとするとエラーが出てしまう
こんにちは投資ロウトです。
背景
react-nativeで開発しようとしていたところで、iOS用のipaファイルを作成しようとしていたところ、Archiveを実施しようとすると、下記のエラーが出てしまう。
Signing for "XXXX" requires a development team. Select a development team in the Signing & Capabilities editor.
作業
エラー1_対処法
①xcodeで「Target」を開き、「Signing & Capabilities」を選択。
②「Team」からAdd Acountを選び、開発用のapple IDを入力。
③「Team」から②で登録したアカウントを設定すると、この事象は解決します。
エラー2_対処法
次は下記のエラーが出てくる
Your team has no devices from which to generate a provisioning profile. Connect a device to use or manually add device IDs in Certificates, Identifiers & Profiles. https://developer.apple.com/account/
apple developerサイトでデバイスを登録していないのが要因。
上記リンクの以下をやろうとリンクを踏むと、組織アカウントがきちんと設定されていませんと表示されました。
1. 「証明書、ID、プロファイル」のサイドバーで「Devices(デバイス)」をクリックし、左上にある追加ボタン(+)をクリックします。
エラー3_対処法
エラー2でさらに以下のエラーが発生、apple developerというapple storeから申請する作業がまだ未完成となっており、それが原因でエラーが発生していました。
Unable to find a team with the given Team ID 'XXXXXXXX' to which you belong. Please contact Apple Developer Program Support. https://developer.apple.com/support
下記のサポートからアクセスを行い、電話で組織アカウント等の登録状態について問い合わせを実施して、サポートの方から残っている手続きのキャンセルを再開をして貰って作業を実施。
上記作業を行うことにより、アカウントが組織アカウントで登録されました。
エラー2_の続き
エラー3が終わると、下記のようにデバイスが登録できるようになるので、
①Register a Deviceを押す
②以下の画像の項目を入力する
※UUIDは、iOSをMacに接続した状態で、Xcodeのwindowタブをクリックし、devices and simulatorsを選択(iphoneのロックは解除しておくこと)。
その後identifierの値を下記の画像のUUIDに入力する
③アプリIDをまず作成する
アプリIDを選択しcontinue
appを選んでcontinue
説明と、appIDを入れて登録します。
appIDは、「com.会社名.アプリ名」で登録しました。
④Profile画面でプロファイルタイプを選択し、作成を実施する。
今回はiOSのアプリの開発用なので、「iOS App Development」を選択し、continueを押下する。
※配布用はapp storeになります
先ほど作成したアプリIDを選択します。
次に対象の名前を選択して、続くを選択します。
対象のデバイスを選択して続くを選択
プロビジョニングプロファイル名を入力して生成するを選択
プロビジョンファイルをダウンロードします。
automatically manage signingのチェックを外し、bundle identifierには「apple developerで登録したIdentifier」を入力。
provisioning Profileに先ほどダウンロードしたProfileを設定する
エラー4
次は以下のエラーが発生
File /Users/xxx/Library/Developer/Xcode/DerivedData/ProjectName-yyy/Build/Intermediates.noindex/ArchiveIntermediates/ProjectName/BuildProductsPath/Release-iphoneos/ProjectName.app/main.jsbundle does not exist. This must be a bug with React Native, please report it here: https://github.com/facebook/react-native/issues'
react-nativeのプロジェクトのルートで以下を実行
npx react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
【オプションの解説】
npx react-native bundle・・・オフラインで使用するための JavaScript バンドルを構築します
--entry-file・・・ルート JS ファイルへのパス (JS ルートに対する絶対パスまたは相対パス)
--platform ios・・・「ios」または「ios」のいずれかまたは「アンドロイド」 (デフォルト: 「ios」)
--dev false・・・false の場合、警告は無効になり、バンドルは縮小されます (デフォルト: true)。
--bundle-output ios/main.jsbundle・・・結果のバンドルを保存するファイル名。/tmp/groups.bundle
--assets-dest ios・・・バンドルで参照されるアセットを保存するディレクトリ名
上記を実施して、再度「Xcodeでプロジェクトを開き、「Product」メニューから「Clean Build Folder」を選択をし、その後Archiveが成功しました。
※ただArchiveは数分〜10分前後PCのスペックによっても異なるかもしれませんが、かかるので注意してください。
Discussion