9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

複数のApple開発者アカウントを運用していると、実は危険な flutter create の動作

Last updated at Posted at 2022-06-14

この内容は古い情報です。現在は Automatically Manage Signing がONでも Capability を追加しない限りは、勝手にバンドルIDが Apple Developer に追加されてしまう動作は起こらないようです。

以前は Apple Developer アカウント側にワイルドカード App ID が存在しないとXcodeからバンドルIDを登録に行っていた気がするのですが...。私の勘違いだったら、ごめんなさい。

いちおう flutter create が証明書を検索する流れについては現在も同じなので、記事としては残しておきます。

以下、古い内容

複数の Apple 開発者アカウントを使って開発している環境で flutter create を使って新規プロジェクトを作成して開発を始めると、予期せぬ開発者アカウントに新規作成したプロジェクトのバンドルIDが自動登録されてしまうことがあります。

著者が確認した Flutter のバージョン: 2.8.1

手順

複数の Apple 開発者アカウントを使って開発している macOS 環境で、以下の操作をします。

  • flutter create で Flutter プロジェクトを新規作成する
  • Xcode でそのプロジェクトを開く

このとき、生成された Xcode プロジェクトの自動署名管理(Automatically Manage Signing)はオンなので、開発者アカウントに新しいプロジェクトのバンドルIDが自動登録されます。しかし、どのアカウントに登録されるかは不定です。そのときの開発機の Keychain の状態に依存します。

原因

flutter create が、Keychain に格納されている証明書を自動検索し、Xcode のDEVELOPMENT_TEAMを勝手に設定してしまうのが原因です。

flutter create は内部で、security find-identity -p codesigning -v コマンドを実行し、Keychain に登録されている Apple Development 証明書を検索します。そして、

  • 過去に選択された証明書(flutter config で確認できる ios-signing-cert に保存されている値)があればその証明書
  • なければ、上記コマンドで最初に見つかった Apple Development 証明書

が使われるように、 Xcode プロジェクトのチームIDを自動設定するようです。

このため、自動設定されたものが、バンドルIDを登録したいアカウントの Apple Development 証明書だった場合は良いのですが、そうでない場合は、Xcode でプロジェクトを開いた瞬間に予期せぬアカウントにバンドルIDの登録が走ってしまいます。

対策

flutter create に署名の設定を変更するオプションはありません。
Xcode でプロジェクトを開くと、その瞬間にバンドルIDの登録が走ってしまいますので、Xcode からは設定が変えられません(オフラインで起動する、という手はありますが)。

ということで、ベタですが、flutter create でプロジェクトを生成したあと、ios/Runner.xcodeproj/project.pbxproj をテキストエディタで開いて、DEVELOPMENT_TEAMの行(3箇所)をすべて削除するのが確実かなと思います。

おわりに

誤ってバンドルIDを登録した先が、有料版の開発者アカウントであれば、開発者ポータルにログインしてバンドルIDを消せますので、深刻な問題にはならないかと思います。ただ、バンドルIDを誤って登録したことはなかなか気が付きにくいので、A社のバンドルIDがB社のアカウントに登録されてしまったが、B社さんから指摘されるまで気が付かなかった...みたいなことはありそうで怖いです(flutter create が生成するバンドルIDは com.example.<projectname> なので事故の危険は低いですが、--org オプションでバンドルIDのプリフィックスを変えると...危険ですね)。

あと、気をつけたいのは、無料版の開発者アカウントにバンドルIDが登録されてしまうケースです。無料版のアカウントのバンドルIDは開発者ポータルからは消せません。その場合はバンドルIDが期限切れになるのを1週間待つ(or どうしてもの場合はサポートに相談する)ことになりますので、わりと大変です。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?