Introduction
普通の SSH 接続もそうだが、 Visual Studio Code のリモート接続上のコンソールからも同様。
例えば、SSH のコンソールから flutter build ios
とすると
1 | % flutter build ios |
VSCode から F5
によるデバッグを開始、または flutter build ios
すると
1 | Launching lib/main.dart on iPhone (2) in debug mode... |
となる。
だが、VNC 接続なりなんなりで、直接 OSX 上のシェルや VSCode から実行する分には何の問題もない。
調べた限り、シェルや環境変数に大きな違いもない。
何故?
How to resolve?
issue でも報告が多い内容で
- iOS app fails to codesign (errSecInternalComponent) when running from Remote SSH session in VS Code
- “Visual Studio Code Remote - SSH” iOS and macOS development requires the keychain be unlocked in the session
他多数。
根本の原因は、ビルドプロセスが SSH のセッション上でキーチェーンにアクセスできないことが原因らしい。
キーチェーンにアクセスできないから署名鍵にアクセスできずアプリの署名に失敗というわけ。
対策は SSH コンソールや VSCode のターミナルで下記を入力。
1 | $ security unlock-keychain login.keychain |
パスワード (sudo の) を入力することでキーチェーンにアクセスできるようになり、同じシェルからの iPhone へのデプロイやデバッグが上手くいくようになる。