Realmを自分のアプリ(Xamarin Android)に追加しようとしています。まずエミュレータから始める(Xaamrin android player - Android Lollipop搭載のNexus 5)エミュレータで実行中のXamarin.Androidアプリでレルムを使用すると、RealmFileAccessErrorExceptionがスローされます
マイコード:私は取得しています
protected override async void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MyActivitylayout);
....
try
{
var path = AndroidIoHelper.CreateFileInAppFolder(AndroidIoHelper.GetAppDataFolder(), "tlm_db", "realm");
var realm = Realm.GetInstance(path);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
.......
}
例外:
Realms.RealmFileAccessErrorException:操作が Realms.NativeCommon.ExceptionThrower(のIntPtr例外コード、のIntPtrで許可されていません utf8String、IntPtr stringLen)[0x0003b] in:0で (ラッパーのネイティブ管理d)Realms.NativeCommon:ExceptionThrower (int、intntr、intptr、intptr、intptr、intptr)(ラッパーによって管理されるネイティブ) Realms.NativeSharedRealm:open (Realms.SchemaHandle、string、intptr、intptr、intptr、byte []、ulong) (0550): Realms.RealmFileAccessErrorException:操作が許可されていません。05-15 12:57:18.384 I/mono-stdout(5250): Realms.NativeCommon。 ExceptionThrower(IntPtr exceptionCode、IntPtr utf8String、IntPtr stringLen)[0x0003b] in:0 05-15 12:57:18.384 I/mono-stdout(5250):at(ラッパーネイティブ管理対象) Realms.NativeCommon: ExceptionThrower(intptr、intptr、intptr)05-15 12:57:18.385 I/mono-stdout(5250):at(ラッパーによって管理されるnativRealms.NativeSharedRealm:open (Realms.SchemaHandle、string、intptr、intptr、intptr、 .GetInstance (Realms.RealmConfiguration設定)[0x0010c] in:0 05-15 12:57:18.385 I/mono-stdout(5250):Realms.Realm.GetInstance (System.String databasePath)[0x00019] in :0 05-15 12:57:18.385 I/mono-stdout(5250): MyApp.Activities.SplashScreenActivity + d__4.MoveNext( )[0x00116] in C:\ Users *** \ Source \ Repos \ AppName \ MyApp \ Activities \ SplashScreenActivity.cs:Realms.Realm.GetInstanceの66 (Realms.RealmConfigurationの設定) [0x0010c]:0のRealms.Realm.Ge MyApp.Activities.SplashScreenActivity + d__4.MoveNext() の[0x00116] C:\ Users *** \ Source \ Repos \ AppName \ MyApp \ Activitiesの中の(System.String databasePath)[0x00019] \ SplashScreenActivity.cs:66
すると、私は(var realm = Realm.GetInstance();
)を取得していますパスを指定しない場合:
System.ArgumentNullException:値をnullにすることはできません。パラメータ名: 型System.Activator.CreateInstance(System.Type型、ブール 非公開) /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/systemの[0x00006] /activator.cs:205 05-15 13:05:05.257 I/mono-stdout(5474):System.ArgumentNullException: 値をnullにすることはできません。 05-15 13:05:05.257 I/mono-stdout(5474): パラメータ名:type 05-15 13:05:05.257 I/mono-stdout(5474): でSystem.Activator.CreateInstance(System。タイプタイプ、ブール型非公開) [0x00006] /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/activator.cs:205 05-15 13:05: 052557 I/mono-stdout(5474): System.Activator.CreateInstance(System.Type型) /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlibの[0x00000] /system/activator.cs:147 at System.Activator.CreateInstance(System.Type type) /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/systemの[0x00000] /activator.cs:147 at Realms.Realm.CreateRealmObjectMetadata(System.Type realmObjectType)[0x0001e] in:0 System.Linq.Enumerable.ToDictionary [TSour TKey、TElement] (IEnumerable
1 source, System.Func
2 keySelector、System.Func2 elementSelector, IEqualityComparer
比較者[0x0004d] /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/システム/ LINQの/ Enumerable.cs:855 System.Linq.Enumerable.ToDictionary [TSOURCE、処理鍵、TElement] (IEnumerableを1 source, System.Func
2 keySelector、System.Func2 elementSelector) [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:847 at Realms.Realm..ctor (Realms.SharedRealmHandle sharedRealmHandle, Realms.RealmConfiguration config) [0x00037] in <filename unknown>:0
1つのソースで 、System.Func elementSelector、たIEqualityComparer
at Realms .Realm.GetInstance (Realms.RealmConfiguration config) [0x00171] in <filename unknown>:0 at MyApp.Activities.SplashScreenActivity+<OnCreate>d__4.MoveNext() [0x00116] in C:\Users\***\Source\Repos\AppName\MyApp\Activities\SplashScreenActivity.cs:66 05-15 13:05:05.257 I/mono-stdout(5474): at Realms.Realm.CreateRealmObjectMetadata (System.Type realmObjectType) [0x0001e] in <filename unknown>:0 05-15 13:05:05.257 I/mono-stdout( 5474): at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement] (IEnumerable1 comparer) [0x0004d] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:855 05-15 13:05:05.257 I/mono-stdout(5474): at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement] (IEnumerable
1ソース、System.Func elementSelector)[0x00000] /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:847 05-15 13:05 :05-0557 I/mono-stdout(5474):Realms.Realm..ctor (Realms.SharedRealmHandle sharedRealmHandle、Realms.RealmConfiguration config)[0x00037] in:0 05-15 13:05:05.257 I/05-15 13:05:05.257 I/mono-stdout(5474): MyApp.Activities.SplashScreenActivity +で、stdout(5474):Realms.Realm.GetInstanceで (Realms.RealmConfiguration設定)[0x00171] d__4.MoveNext() [0x00116] Cで:\ユーザー*** \ソース\レポ\ AppNameは\ MyAppに\活動\ SplashScreenActivity.cs:66
アプリは外部ストレージへの書き込み許可を持っています。 レルムと正しくインストールFody nugetパッケージ予想通り、Fody織工はまた、上記の試みは他の問題を持っていたアンドロイド4.2
この質問は、他の誰かがこれに当たった場合のために、ここでディスカッションを起こしたようです。https://github.com/realm/realm-dotnet/issues/542 – Tayschrenn