Closed makmorit closed 1 year ago
管理ツール内で使用しているOpenSSL
、tinycbor
の再ビルドをApple M1環境下で行ったのち、macOS版管理ツールをビルド-->実行させてみました。
Xcode上で幾点か警告は出ましたが、プログラムはM1環境下で動作するようなので、起動させたところ、メイン画面が表示されるところまでは確認できるのですが、BLE関連ヘルパークラスの初期化処理において、下記[self setManager:[[CBCentralManager alloc] initWithDelegate:self queue:nil]];
実行部分でクラッシュするようです。
@implementation ToolBLEHelper
:
- (id)initWithDelegate:(id<ToolBLEHelperDelegate>)delegate {
self = [super init];
if (self) {
[self setDelegate:delegate];
[self setManager:[[CBCentralManager alloc] initWithDelegate:self queue:nil]];
[self setDiscoveredPeripheral:nil];
}
return self;
}
:
原因の調査は、次作業日以降に実施したいと思います。
Xcode上で幾点か警告は出ましたが、プログラムはM1環境下で動作するようなので、起動させたところ、メイン画面が表示されるところまでは確認できるのですが、BLE関連ヘルパークラスの初期化処理において、下記
[self setManager:[[CBCentralManager alloc] initWithDelegate:self queue:nil]];
実行部分でクラッシュするようです。
Bluetoothに関する、プライバシー関連設定が欠落していたためのようです。 e857d29で、設定を追加いたしましたところ、正常動作を確認しております。
以上の対応で、macOS バージョン12.0以降で動作する管理ツールはビルドできました。 しかしながら、以下の問題が残っています
[注1] 管理ツールで、Apple以外の外部ライブラリー(OpenSSL、TinyCBOR)を使用しているため。 [注2] 11.0に対応させるためには、OpenSSL、TinyCBORをビルドする際、ターゲットOSバージョンを明示的に指定する必要があるようです(方法は未調査)。 [注3] Intel mac対応を行うためには、Intel macでビルドしたOpenSSL、TinyCBORの静的ライブラリーファイルを作成する必要があります。
以下の順番で対応を進めようと思います。
元々macOSでは、nRF52840アプリケーションのCCID I/Fはサポートされません。 それを専用ドライバーで利用可能にしているという経緯がありました。 (こちらのドキュメントに記載の通り)
もしかすると、macOSのバージョンが進んだことにより、現在管理ツールで使用しているCCID I/F動作用のAPI等が動作しなくなった可能性もあります。 ただし現状、事象の詳細を掴めていないので、macOS側、ファームウェア側の両方の観点から、問題の調査と解析を進めたいと思います。
前項(1)で、管理ツールの機能がすべて再稼働化したことを確認したら、Intel macに、macOS バージョン12+Xcode バージョン14.2の組み合わせ(本プルリクエストと等価の環境)を用意したうえで、OpenSSL、TinyCBORをビルドし、管理ツールのプログラムとリンクさせ、実行可能ファイルを作成します。 その後、動作確認を実施します。
優先度は一番低くなるかと存じますが、為念でmacOS バージョン11を使用しているユーザーのために、OpenSSL、TinyCBORのビルドターゲットをバージョン11に下げた静的ライブラリーを作成のうえ、管理ツールのプログラムとリンクさせ、実行可能ファイルを作成します。 その後、動作確認を実施します。
概要
macOSのバージョン
10.15
でサポートが停止してしまっているmacOS版管理ツールを、Apple M1以降のプロセッサー搭載のPCや、macOSのバージョン11
以降で稼働させることができるよう、macOS版管理ツールを、最新版の開発環境を使用して再構築します。本プルリクエストでは、macOS(バージョン
12.6.3
)にインストールしたXcode(バージョン14.2
)で、現行macOS版管理ツールのコードをビルド/実行可能ファイルの最低限の稼働確認をしたいと思います。