Windows 上でネイティブライブラリを使用したiOSアプリのデバッグ
Windowsマシンから.NET MAUI iOSアプリをデバッグすると、IronOCRのようなネイティブサードパーティライブラリを読み込むことができません。 アプリは接続されたiPhoneで起動するかもしれませんが、IronOCRが依存するネイティブのTesseractコードが正しくデプロイされません。
Failed to locate 'libtesseract.5'...
Access to the path ... is denied.
原因は、Appleの厳密に制御された開発モデルにあります。 iOSアプリは、有効なApple Developer証明書で署名する必要があり、ネイティブライブラリはARM64用にコンパイルされてAppleのツールチェーンを通じてリンクされ、アプリは厳密なサンドボックス下で実行され、実行時にファイルシステムアクセスが制限されます。Appleのツール(lipo)はmacOSでのみ実行されるため、Windowsマシンではネイティブライブラリを完全にパッケージ化または署名することはできません。 Windowsからデバッグすると、Tesseractバイナリが見つからなかったり、署名されていなかったり、サンドボックスによってブロックされたりして、上記のエラーが発生します。
そのため、同じコードベースがAndroidまたはWindowsターゲットで正常に動作するのです。これらのプラットフォームは、Appleの署名要件なしにネイティブライブラリをロードし、IronOCRにバンドルされたTesseractが期待通りに機能します。
解決策
1. Macを使用してビルドする
macOSで直接開発するか、Visual StudioのPair to Mac機能を使用して、iOSビルドをMacにオフロードしながらWindowsでコードを記述します。 Appleのツールチェーンを経由してビルドをルーティングする唯一の方法で、ネイティブライブラリが正しくコンパイルされ、署名されます。
2. IronOCRにライブラリをデプロイさせる
ネイティブライブラリファイルを手動でコピーしたり移動したりしないでください。 IronOCRはTesseractのデプロイを処理し、パスを手動で編集すると、iOSパッケージングモデルが壊れます。
3. macOS経由で実デバイスでテストする
物理的なiPhoneまたはMacから起動したiOSシミュレータに対してテストを実行してください。 これにより、サインされ、サンドボックス化されたアプリがどのように動作するかの正確な描写を得ることができます。Windowsデバッグセッションでは再現できません。

