Introduction

普通の SSH 接続もそうだが、 Visual Studio Code のリモート接続上のコンソールからも同様。

例えば、SSH のコンソールから flutter build ios とすると

1
2
3
4
5
6
7
8
9
10
11
% flutter build ios
Building jp.taktak.flutter.ios.demo for device (ios-release)...
Automatically signing iOS for device deployment using specified development team in Xcode project: U27JXXX492
Running Xcode build...
└─Compiling, linking and signing... 9.8s
Xcode build done. 22.6s
Failed to build iOS app
Error (Xcode): Failed with exit code exited with status 1


Encountered error while building for device.

VSCode から F5 によるデバッグを開始、または flutter build ios すると

1
2
3
4
5
6
7
8
9
10
Launching lib/main.dart on iPhone (2) in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: U27JXXX492
Xcode build done. 41.0s
Failed to build iOS app
Could not build the precompiled application for the device.
Error (Xcode): Target debug_unpack_ios failed: Exception: Failed to codesign /Users/t-takeuchi/Work/OpenSource/Demo2/TestFramework/Appium/Flutter/01_Sample/demo/build/ios/Debug-iphoneos/Flutter.framework/Flutter with identity FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.

2

Error launching application on iPhone (2).

となる。

だが、VNC 接続なりなんなりで、直接 OSX 上のシェルや VSCode から実行する分には何の問題もない。
調べた限り、シェルや環境変数に大きな違いもない。

何故?

How to resolve?

issue でも報告が多い内容で

他多数。

根本の原因は、ビルドプロセスが SSH のセッション上でキーチェーンにアクセスできないことが原因らしい。

キーチェーンにアクセスできないから署名鍵にアクセスできずアプリの署名に失敗というわけ。

対策は SSH コンソールや VSCode のターミナルで下記を入力。

1
2
$ security unlock-keychain login.keychain
password to unlock login.keychain:

パスワード (sudo の) を入力することでキーチェーンにアクセスできるようになり、同じシェルからの iPhone へのデプロイやデバッグが上手くいくようになる。