Xamarin.iOS アプリを介して Apple のオンデマンド リソース機能で使用するためにタグ付けされたアセットにアクセスできないという問題が発生しましたが、シミュレーターで実行した場合のみです。これは、環境を更新した後にのみ発生しました。以前は Visual Studio for Mac バージョン 8.3.9 と Xcode バージョン 11.2.1 を使用していましたが、アプリはシミュレーターと物理デバイスの両方で問題なく ODR リソースにアクセスできました。
現在、Visual Studio バージョン 8.4.2 と Xcode バージョン 11.3.1 を使用していますが、アプリが正しく機能していません。ただし、iOS シミュレーター (すべての iOS バージョン) で実行している場合にのみ問題が発生します。物理デバイス (iOS バージョン 13.0 を実行) でビルドして実行でき、問題は発生していません。
Visual Studio for Mac を使用して Apple ODR で使用するアセットを作成してタグ付けしています。アプリの iOS プロジェクトにリソースとして直接追加する ZIP ファイルがあります。そのプロパティで、BuildAction を BundleResource として設定し、出力ディレクトリに [コピーしない] を選択して、オンデマンド リソース タグを付けます。
ソリューションをビルドすると、この ZIP ファイルが の下の *.assetpack ディレクトリにネストされていることがわかりますbin/iPhone/Debug/device-builds/iphone12.3-13.0/OnDemandResources
。bin/iPhone/Debug/OnDemandResources/
代わりに入れるべきだと思います。NSBundleResourceRequest
'sを呼び出すコードを実行すると、BeginAccessingResourcesAsync
何もしないように見えます。関数が呼び出された後、VS のアプリケーション出力デバッグ ウィンドウに次のエラー メッセージが表示されます。
Begin: Request 0x0x600002566100 response: Error: Error Domain=NSCocoaErrorDomain Code=4994 "The requested application data doesn’t exist." UserInfo={NSLocalizedFailureReason=InvalidTag}
他にスローされるエラーや例外はありません。オブジェクトからリソース パスを取得しようとすると、NSBundleResourceRequest.Bundle
予想どおり null が返されます。
これが発生する理由と、これが物理デバイスではなく iOS シミュレーターでのみ発生する理由は何ですか? 上記のエラー メッセージを検索しても、役立つ情報は見つかりませんでした。バンドルされたアセットがデバッグ モードでビルドされる方法に関して、Visual Studio で何か変更がありましたか?