xcodebuild
コマンドで iOS のプロジェクトをビルドする際の話。
発生した問題
Xcode 10.1 を使っていたときは下記のようなコマンドで問題なく動いていた。
xcodebuild clean build \
-workspace Foo.xcworkspace -scheme Bar -configuration Debug \
CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO
が、Xcode 11.1 を使うようにしたら、次のようなエラーが発生するようになってしまった。
error: An empty identity is not valid when signing a binary for the product type 'App Extension'. (in target 'Baz' from project 'Foo')
どうやら署名しようとしたものの空の identity は valid ではないということでエラーになってしまう模様。
解決策
以下のように CODE_SIGNING_ALLOWED=NO
をつけると Xcode 11.1 でも署名されないようで、ビルドできるようになった。
xcodebuild clean build \
-workspace Foo.xcworkspace -scheme Bar -configuration Debug \
CODE_SIGN_IDENTITY=\"\" \
CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
備考
Xcode 10.1 の時は問題なくて Xcode 11.1 の時に問題に遭遇した、と書いたが、プロジェクトのコード自体も変化しているので、必ずしも Xcode のバージョンによる差異なのかどうかは確かではない。 が、下記 「参考」 に挙げた事例を見る感じ、Xcode 10.2 から挙動が変わったっぽい。
参考
- https://github.com/openbakery/gradle-xcodePlugin/issues/411 : Xcode 10.2 を使っていて同様の問題に遭遇した例
- https://github.com/realm/jazzy/issues/1057 : Xcode 10.2 でこの問題が起こるということが書かれている