diverta / onecard-fido

MIT License
0 stars 0 forks source link

[macOSツール再構築対応] Xcode開発環境の更改 #740

Closed makmorit closed 1 year ago

makmorit commented 1 year ago

概要

macOSのバージョン10.15でサポートが停止してしまっているmacOS版管理ツールを、Apple M1以降のプロセッサー搭載のPCや、macOSのバージョン11以降で稼働させることができるよう、macOS版管理ツールを、最新版の開発環境を使用して再構築します。

本プルリクエストでは、macOS(バージョン12.6.3)にインストールしたXcode(バージョン14.2)で、現行macOS版管理ツールのコードをビルド/実行可能ファイルの最低限の稼働確認をしたいと思います。

makmorit commented 1 year ago

進捗

管理ツール内で使用しているOpenSSLtinycborの再ビルドを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;
    }
    :

原因の調査は、次作業日以降に実施したいと思います。

makmorit commented 1 year ago

進捗

Xcode上で幾点か警告は出ましたが、プログラムはM1環境下で動作するようなので、起動させたところ、メイン画面が表示されるところまでは確認できるのですが、BLE関連ヘルパークラスの初期化処理において、下記[self setManager:[[CBCentralManager alloc] initWithDelegate:self queue:nil]];実行部分でクラッシュするようです。

Bluetoothに関する、プライバシー関連設定が欠落していたためのようです。 e857d29で、設定を追加いたしましたところ、正常動作を確認しております。

以上の対応で、macOS バージョン12.0以降で動作する管理ツールはビルドできました。 しかしながら、以下の問題が残っています

[注1] 管理ツールで、Apple以外の外部ライブラリー(OpenSSLTinyCBOR)を使用しているため。 [注2] 11.0に対応させるためには、OpenSSL、TinyCBORをビルドする際、ターゲットOSバージョンを明示的に指定する必要があるようです(方法は未調査)。 [注3] Intel mac対応を行うためには、Intel macでビルドしたOpenSSL、TinyCBORの静的ライブラリーファイルを作成する必要があります。

makmorit commented 1 year ago

今後の方向性

以下の順番で対応を進めようと思います。

(1) CCID I/Fの再稼働化

元々macOSでは、nRF52840アプリケーションのCCID I/Fはサポートされません。 それを専用ドライバーで利用可能にしているという経緯がありました。 (こちらのドキュメントに記載の通り)

もしかすると、macOSのバージョンが進んだことにより、現在管理ツールで使用しているCCID I/F動作用のAPI等が動作しなくなった可能性もあります。 ただし現状、事象の詳細を掴めていないので、macOS側、ファームウェア側の両方の観点から、問題の調査と解析を進めたいと思います。

(2) Intel mac対応

前項(1)で、管理ツールの機能がすべて再稼働化したことを確認したら、Intel macに、macOS バージョン12+Xcode バージョン14.2の組み合わせ(本プルリクエストと等価の環境)を用意したうえで、OpenSSL、TinyCBORをビルドし、管理ツールのプログラムとリンクさせ、実行可能ファイルを作成します。 その後、動作確認を実施します。

(3) macOS バージョン11対応

優先度は一番低くなるかと存じますが、為念でmacOS バージョン11を使用しているユーザーのために、OpenSSL、TinyCBORのビルドターゲットをバージョン11に下げた静的ライブラリーを作成のうえ、管理ツールのプログラムとリンクさせ、実行可能ファイルを作成します。 その後、動作確認を実施します。