C# 如何在Xamarin应用程序和Java Android应用程序之间共享sqlite数据库

C# 如何在Xamarin应用程序和Java Android应用程序之间共享sqlite数据库,c#,android,sqlite,xamarin,xamarin.android,C#,Android,Sqlite,Xamarin,Xamarin.android,正如标题所说,我想在一个用Java编写的Android应用程序和一个用Xamarin用C#编写的应用程序之间共享一个Sqlite数据库。我可以在两个Java应用程序()之间成功共享一个数据库,但当我在Xamarin中尝试相同的操作时,会出现以下错误: Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库 我想我有两个问题 我没有正确设置共享用户ID。目前,我将以下属性置于我的主要活动之上 [注册(“

正如标题所说,我想在一个用Java编写的Android应用程序和一个用Xamarin用C#编写的应用程序之间共享一个Sqlite数据库。我可以在两个Java应用程序()之间成功共享一个数据库,但当我在Xamarin中尝试相同的操作时,会出现以下错误:

Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库

我想我有两个问题

  • 我没有正确设置共享用户ID。目前,我将以下属性置于我的主要活动之上

    [注册(“my.user.id”)]

    我尝试在清单文件中使用
    android:sharedUserId=“my.user.id”
    ,但这会引发错误,无法部署到我的设备上

  • 我不知道整个应用程序的签名是如何工作的。因此,可能我的设备认为这两个应用程序来自不同的发行商,不允许这两个应用程序共享上下文

  • 编辑:
    我只是想补充一下,我是如何用相同的证书签署这两个应用程序的,以供将来参考


    Android证书为noramly
    “C:\Users\userName\.Android\debug.keystore”
    ,Xamarin证书为noramly
    “C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore”
    。我首先构建了Xamarin应用程序,所以我将debug.keystore文件从Xamarin文件夹复制到android文件夹。(我确信它会反过来工作,但还没有测试过)

    Xamarin。Android
    不支持通过
    ApplicationAttribute
    SharedUserId
    。(我想没有人会对此提出异议)

    参考:

    通过清单添加共享用户id,它将正常工作:

    例如:

    <application android:allowBackup="true" android:sharedUserId="com.sushihangover" android:icon="@mipmap/icon" android:label="@string/app_name"></application>
    
    
    
    注意:确保手动卸载这两个应用程序,添加
    sharedUserId
    ,重建并重新安装这两个应用程序

    注意:确保对Java和Xamarin应用程序使用相同的签名证书