Flutterで開発したアプリを、iOSアプリとしてリリースするには、Apple Developerの有料契約をした後、Apple DeveloperのサイトにApp IDの登録をする必要があります。
通常、このApp IDには、Flutterプロジェクトから起動したXcode上の「Bundle Identifier」に設定している名前を登録することになりますが、自分の場合は、
An attribute in the provided entity has invalid value
An App ID with Identifier 'com.xxxxxxxx.yyyyyyyyyyy' is not available. Please enter a different string.
というエラーが出て、登録できませんでした。
この解決にかなり苦労したので、その過程と対処法を共有したいと思います。
自分の状況における結論は、以下のいずれかです。
- Provisioning Profileの有効期限(1週間)が過ぎるまで、Xcodeでビルドせず待つ
- Apple Developerのサポートに連絡して使用可能にしてもらう
自分と同じ状況の方には、ご参考になれば幸いです。
40代からプログラミング(Flutter)を始めて、GooglePlayとAppStoreにアプリを公開しているhalzo appdevです。
作成したアプリはこちら↓ 全てFlutterで開発したアプリです。
なぜエラーになったか
Flutterで開発中、iOSシミュレーターでテストするには、Xcode上の「Team」に、Apple IDを設定する必要があります。
自分はこの「Team」に、Apple Developer契約をしていない無料アカウント(Apple ID)を設定していました。
※学習中の段階では、まだApple Developerの有料契約はしたくないですから、無料アカウントでテストしている方は多いと思います。
しかし、iOSの審査に出すには、開発専用のApple IDを取得したほうが良いと考えたので、新しく作成したApple IDでApple Developerの有料契約をしました。
一方、Apple Developerサイトに登録するApp IDは、Xcodeの「Bundle Identifier」に設定した名前(以下、仮に「com.xxxxxxxx.yyyyyyyyyyy」とします。)と一致させるのが通常なので、自分もそうしようとしました。
しかし、この「Bundle Identifier」は、過去、「Team」に設定した無料アカウント(Apple ID)と紐付いてしまっていて、別のApple IDからは使えなくなっていました。
これがエラーの原因でした。
Xcode上で紐付けの変更を試みるもエラー
そこで、Xcode上で新しいApple IDに「Bundle Identifier」を紐付けるよう変更を試みました。
具体的には、Xcodeの「Runner」→「Signing & Capabilities」→「Signing」の「Team」で、「Add Account…」から、Apple Developer契約に使ったApple IDを登録し、「Bundle Identifier」との紐付けを変更できるか試しました。
すると、以下のようなエラー画面に。。。
出ているエラーメッセージ自体は、Xcodeを使っていると、よく目にするエラーです。
これは、「Bundle Identifier」をユニークな(他の人が使っていない)名称に変えないと解消しないエラーなので、この方法では紐付けを変更できないことが分かりました。
※「Bundle Identifier」をユニークな名称にしてエラーを回避する件については、以下の記事をご参考ください。
Bundle Identifierを変更すれば登録はできる
Apple Developerのサイトで、現状の「Bundle Identifier」とは異なる名称で、App IDの登録を試みると、問題なくできました。
しかし、Flutterの場合、iOSの「Bundle Identifier」、Flutterの「Project name」、Androidの「package name」は全て紐付いており、かつ自分の場合は、既にGoogle Play上にアプリをリリース済でした。
そのため、今からiOSの「Bundle Identifier」だけ変更すると、後々不具合を誘発しそうなので、避けたいと考えました。
調べてみると、下記記事のとおり、「Bundle Identifier」の名前を変えてもビルドできる、と教えてくださる情報もあったので、やっても良かったかもしれないです。
ただ、ビルドできても起動できない恐れがある、との記述もあったので、ちょっと踏み切れませんでした(自分の理解が足りていないのも多分にあります)。
1週間待てば解決しそう
なんとか「Bundle Identifier」の名称を変えずに、Apple DeveloperサイトにApp IDを登録する方法がないか調べていると、以下の情報を見つけました。
無料アカウントを登録した場合は、1週間、Xcodeで新たなビルドをせずに待てば解消されるとのこと。とてもありがたい情報です。
そこで、Xcodeの「Provisioning Profile」の右にある「i」マークを押してみると、確かに有効期間があと6日と表示されている事に気づきました。
「あと6日」となっていますが、表示されている「iOS Team Provisioning Profile: com・・・」のところをクリックして「Provisioning Profile」を開くと、実質的に有効期間が1週間で切れることが分かります。
なお、「Provisioning Profile」は、Apple IDと「Bundle Identifier」との紐付きを保証する証明書みたいなもの、と理解しています。
どうやら1週間経てば、別のApple IDで紐付けし直すことができそうです。
ちょっと希望が湧いてきました。
待てないのでApple Developer Supportに問い合わせてみる
ただ、正直「1週間も待ちたくない」と思いましたw
そこで、Apple Developerにユーザーサポートがあることを思い出しました。
サポートサイトを見ると、Xcode関連のような技術的な内容も受け付けているようです(どの程度対応いただけるかは未知数ですが、、、)。
Apple Developer契約に、年間1万円以上もの登録費を払っている立場ですし、これを活用しない手はないと思いました。
早速、問い合わせページから、
無料Apple IDと「Bundle Identifier」(com.xxxxxxxx.yyyyyyyyyyy)との紐付きを解消してもらえませんか?
という趣旨の問い合わせをしてみました。
Apple Developerの問い合わせは、以下の画面からできます。
【注意点】
問い合わせする際は、現時点で「Bundle Identifier」と紐付いている方のApple IDでログインしてください。
※自分の場合は、前述のとおり、紐付いているのがApple Developer契約をしていない無料アカウント(Apple ID)だったので、上記Apple Developerサイトの画面は、無料契約者用の画面になっています。
初め自分は、Apple Developerと有料契約したApple IDでログインし、問い合わせをしたのですが、サポートからの返信で、
現在紐付いている無料Apple IDの方から、再度お問い合わせください。
と見事に振られてしまいました。。
そこで、無料Apple IDでApple Developerのサイトにログインし(無料のままでもログイン自体はできます)、再度、同じ問い合わせをしました。
また、自分の場合、しばらく無料のApple IDでログインしていなかったせいか(多くの方がそうだと思いますが、、)、Apple Developerのサイトにログインした直後に、アカウントの確認?に関する問い合わせのようなページが出ました。
この問い合わせ欄に何か入力しないと、先に進めない感じだったので、やむなく今回の問い合わせ内容を入れて送信しました(しかも英語じゃないと駄目でした、、、)。
結局、アカウント関係の問い合わせに対して、的外れの問い合わせをした形になったので、先方からは、
アカウント関係のサポートなんですが、、、
という困惑した感じの返事が来てしまいました。
後で分かったのですが、このアカウント関係の問い合わせページはスキップでき、有料Apple Developer向けと同じ画面遷移で、サポートの問い合わせページまで行けました。
※アカウント関係の問い合わせページはキャプチャできなかったので、上記で掲載した画面遷移には含まれていません。
そこで改めて、正規の問い合わせページから、三度目の問い合わせを送りました。。
結局、時間が解決した
サポートからの返信後、Apple DeveloperにApp IDを登録
Apple Developerのサポートから返信があり、
無料Apple IDと「Bundle Identifier」との紐付きを解消したので、新しいApple IDで使えるようになりました。
とのことでした。ちゃんと対応いただけて、大変助かりました。
結果、Apple Developerのサイトに、当初予定していた「Bundle Identifier」の名称(仮名:com.xxxxxxxx.yyyyyyyyyyy)で、App IDを登録することができました。
ただ、最終的な返信を受けたのが、問い合わせから1週間後だったので、単に「Provisioning Profile」の有効期限が切れた影響かもしれず、正直、どちらのおかげで解消されたのか、分かりませんでした。
Appleのサポート返信は、問い合わせ日から2営業日かかることになっており、自分の場合は3回も問い合わせたため、トータル1週間かかってしまいました。。
Xcode上でエラー。実機の接続・登録で解消
Apple DeveloperサイトへのApp ID登録後、Xcodeを開き、「Team」を有料のApple IDに変更しましたが、下記エラーになってしまいました。
Failed to create provisioning profile.
No profiles for 'com.xxxxxxxx.yyyyyyyyyyy' were found
よく読むと、Developerサイトに登録されたデバイスが無い、ということが原因のようです。
こちらの記事でも説明されていますが、macにiOS実機を接続すると解消するようです。
そこで、iPhone実機をmacに接続すると、今度は以下のエラーが出ました。
Device "qqqqのiPhone" isn't registered in your developer account.
文字どおり、Developerアカウントにデバイスが登録されていないよ、ということなので、素直に「Register Device」ボタンを押すと、エラーが解消されました。
ちなみに、Xcodeの「Team」に有料契約したApple IDを設定すると、「Provisioning Profile」の有効期間は1年間になるようです。
※「11ヶ月」と書かれていますが、「Provisioning Profile」を開くと、ちょうど1年後の日付が期限として記載されています。
無料アカウントに比べるとだいぶ長いですね。さすが有料版です。
まとめ
紆余曲折ありましたが、今回の教訓に基づき、対処法を整理しておきます。
これからアプリ開発を開始する場合は、そもそもApp ID登録エラーを発生させないため、あらかじめ下記対応をしておく。
- Xcodeの「Team」には、Apple Developerの有料契約に使用するApple IDを設定しておく。
- Xcodeの「Bundle Identifier」には、Apple DeveloperサイトにApp IDとして登録して問題ない名称を設定しておく(これはFlutter Projectの名称を決める時点で意識しておく必要あり)。
既にXcodeの「Team」に無料アカウントのApple IDを設定してしまっている場合には、以下のいずれかで対応する。
- 「Provisioning Profile」の有効期限(最大1週間)を確認し、期限が切れるまでXcodeでビルドせずに待つ
- Apple Developerのユーザーサポートに連絡し、無料のApple IDと「Bundle Identifier」との紐付きを解消してもらう(このとき、Apple Developerのサイトには、無料のApple IDでログインして問い合わせをすることに注意!)
最後までお読みいただき、ありがとうございました。
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/
Dart入門 - Dartの要点をつかむためのクイックツアー
コメント