私はモバイルデータベース用にRealmを使用するXamarin Formsアプリケーションを持っていますが、「System.InvalidOperationException:No RealmObjectsがあります。例外はAndroidのみで、Visual Studioからデバッグセッションの外でアプリを開いているときに限ります。Xamarin Forms Androidアプリケーションの起動時にRealmObjectが見つかりません
デバッガでVisual Studioからアプリを起動すると、アプリは正常に動作し、Realmが正しくロードされます。デバッグセッションを停止してデバイス上のアプリケーションを再度開くと、その例外が発生し、アプリケーションがクラッシュします。 Visual Studioからデバイスにアプリケーションを公開して起動するだけで、その例外も表示されます。 iOSは正常に動作し、このエラーは表示されません。
私は、Realm 1.2.1から1.4.0にアップデートされたDebugビルドとReleaseビルド、無効化されたリンク、ProGuardなどを試してみましたが、いずれも問題を解決しませんでした。
私たちのプロジェクトは、すべてのRealmオブジェクトが、プラットフォーム固有のプロジェクトによって参照される別の.NET Standard 1.6プロジェクトに含まれるように構成されています。 Realmモデルプロジェクトと同様に、プラットフォームプロジェクトにもRealm 1.4がインストールされています。
生成されたRealmModuleInitializer.Initialize()メソッドがRealmSchemaクラスのデフォルトタイプリストに36個のRealmObjectsを追加していることを確認するために、私たちのRealmモデルプロジェクトからの出力dllを反映するためにdotPeekを使用しました。適切に動作します。
デバッグセッションの外でAndroidでこれを動作させることができる他に何かがありますか?
[email protected]で小さなレトロケースを隔離したり、プロジェクト全体を私的に共有することができると思いますか? –
@Nikolarinchev私はそれを共有することはできませんアプリで十分な機密情報があります。しかし、.NET標準ライブラリを使って全く同じ構造になっているデモプロジェクトを作成して、それを再作成して渡すことができるかどうかを確認します。 –
@Nikolarinchev私は、この問題の原因となったものを具体的に把握しました。アプリケーションの起動時に、Realmインスタンスを取得する前に、Realmプロジェクトからクラスのインスタンスを構築していた場所に、リンカーの回避策がありました。デフォルトのコンストラクタを持つRealmプロジェクトのクラスを使用するようにそのインスタンス化を変更すると、すべて正常に動作します。したがって、独自のコンストラクタを持たないRealmObjectから拡張されたものを構築することに関連しているようです。 –