当前位置: 首页 > 知识库问答 >
问题:

在Xamarin中使用Realm。模拟器中运行的Android应用程序抛出RealmFileAccessErrorException

逑阳泽
2023-03-14

我正在尝试将Realm添加到我的应用程序(Xamarin Android)中。首先从模拟器开始(Xaamrin android播放器-Nexus 5和androidLollipop)。

此处为Github问题

我的代码:

    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);
        }
        .......
   }

我得到的异常:

领域。RealmFileAccessErrorException:Realms.NativeCommon不允许执行操作。ExceptionThrower(IntPtr exceptionCode,IntPtr-utf8String,IntPtro-stringLen)[0x0003b]位于:0(托管的包装本机)领域。NativeCommon:在(包装器管理到本机)领域的ExceptionThrower(intptr,intptr、intptr)。NativeSharedRealm:open(Realms.SchemaHandle,string,intptr,intptr,intpter,byte[],ulong)05-15 12:57:18.384 I/mono标准输出(5250):Realms。RealmFileAccessErrorException:不允许操作05-15 12:57:18.384 I/mono标准输出(5250):在Realms.NativeCommon。ExceptionThrower(IntPtr exceptionCode,IntPtrutf8String,IntPrr stringLen)[0x0003b]位于:0 05-15 12:57:18.384 I/mono stdout(5250):at(包装器本机托管)领域。NativeCommon:ExceptionThrower(intptr、intptr和intptr)05-15 12:57:18.385 I/mono-stdout(5250):at(包装器管理为本机)领域。NativeSharedRealm:打开(Realms.SchemaHandle,string,intptr,intptr,intpter,byte[],ulong)05-15 12:57:18.385 I/mono标准输出(5250):在Realms.Realm。GetInstance(Realms.RealmConfiguration配置)[0x0010c]位于:0 05-15 12:57:18.385 I/mono标准输出(5250):Realms.Realm。GetInstance(System.String数据库路径)[0x00019]位于:0 05-15 12:57:18.385 I/mono标准输出(5250):MyApp.Activities。C:\Users***\Source\Repos\AppName\MyApp\Activities\SplashScreenActivity中的Splash屏幕活动d__4.MoveNext()[0x00116]。cs:66在Realms.Realm。GetInstance(Realms.RealmConfiguration配置)[0x0010c]位于:0中的Realms.Realm。MyApp.Activities的0中的GetInstance(System.String数据库路径)[0x00019]。C:\Users***\Source\Repos\AppName\MyApp\Activities\SplashScreenActivity.cs:66中的Splash屏幕活动d__4.MoveNext()[0x00116]

如果我没有指定要获取的路径(var realm=realm.GetInstance() ):

系统。ArgumentNullException:值不能为空。参数名称:在系统中键入。activator . create instance(System。Type type,Boolean non public)[0x 00006]in/Users/builder/data/lanes/3053/a94a 03 b5/source/mono/external/reference source/mscorlib/System/activator . cs:205 05-15 13:05:05.257 I/mono-stdout(5474):System。ArgumentNullException:值不能为空。05-15 13:05:05.257 I/mono-stdout(5474):参数名称:type 05-15 13:05:05.257 I/mono-stdout(5474):at系统。activator . create instance(System。Type type,Boolean non public)[0x 00006]in/Users/builder/data/lanes/3053/a94a 03 b5/source/mono/external/reference source/mscorlib/System/activator . cs:205 05-15 13:05:05.257 I/mono-stdout(5474):at System .activator . create instance(System。type type)[0x 00000]in/Users/builder/data/lanes/3053/a94a 03 b 5/source/mono/external/reference source/mscorlib/System/activator . cs:147 at System。activator . create instance(System。type type)[0x 00000]in/Users/builder/data/lanes/3053/a94a 03 b 5/source/mono/external/reference source/mscorlib/system/activator . cs:147 at Realms。realm . CreateRealmObjectMetadata(System。在系统的0中键入realmObjectType) [0x0001e]。linq . enumerable . todictionary[t source,TKey,TElement](IEnumerable < code > 1 source,System。Func2键选择器,系统。/Users/builder/data/lanes/3053/a94a 03 b 5/source/mono/external/reference source/System中的Func2 elementSelector,IEqualityComparer 1 comparer)[0x 0004d]。core/System/Linq/enumerable . cs:855 at System。linq . enumerable . todictionary[t source,TKey,TElement](IEnumerable < code > 1 source,System。Func2键选择器,系统。func < code > 2 element selector)[0x 00000]在/Users/builder/data/lanes/3053/a94a 03 b5/source/mono/external/reference source/System中。core/System/Linq/enumerable . cs:847 at realm。领域..ctor(领域。SharedRealmHandle。realm configuration config)[0x 00037]in

应用具有写入外部存储权限。Realm 和 Fody nuget 软件包安装正确,Fody weavers 按预期存在。

在Android 4.2上使用HTC One X时,它也会崩溃,但有同样的例外

共有1个答案

楚苏燕
2023-03-14

上述尝试存在其他问题。有一个真正的错误目前在领域与存储在外部存储-见问题https://github.com/realm/realm-dotnet/issues/554是证明难以调试。

 类似资料:
  • 是否有方法运行Android模拟器上提供的示例Geofence应用程序:http://developer.Android.com/training/location/geofencing.html 应用程序在启动时关闭,我在Logcat上得到以下错误消息:

  • 我被这个错误困住了,当我在android上做构建时,它工作得很好,但是当我在IOS模拟器上运行我的应用程序时,它却显示我这个错误。我无法找出我的代码中的实际问题是什么。请帮我弄清楚这个情况。 我的flutter sdk版本是1.22.4 无法为模拟器生成应用程序。 在iPhone 11 Pro Max上启动应用程序时出错。

  • 问题内容: 我正在使用Eclipse管理我的Android项目,该项目使用Amazon的适用于AWS的Android库。我已将库jar文件添加到./libs文件夹,从中我将库添加到了Java构建路径(项目属性-> Java构建路径->库->添加JARS …)。我的应用程序可以正确编译,但是当我在模拟器或电话上运行它时,会出现NoClassDefFoundError。我了解到,正确编译应用程序后通常

  • 当在Android Studio中的Flutter上运行模拟器时,appdata\local\Android\sdk\platform-tools中存在adb.exe,但我得到一个错误,表示“无法定位adb”。 此外,按下“Open Android Emulator:~”按钮会导致以下错误: 。 我应该怎么做?在这里输入图像描述

  • 无法解析com.android.tools.build:gradle:2.3.0。 无法获取资源“https://jcenter.bintray.com/com/android/tools/build/gradle/2.3.0/gradle-2.3.0.pom”。无法领导“https://jcenter.bintray.com/com/android/tools/build/gradle/2.3.

  • adb启动服务器adb终止-服务器我尝试了,但没有工作。在com.android.tools.tools.explorer.adbimpl.AdbDeviceFileSystemService.checkState(AdbDeviceFileService.java:221)(位于com.andrid.tools.idea.explorer.adbimpl.AdbDevice FileSystem