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

3
正如标题所说,我希望在使用Java编写的Android应用程序和使用Xamarin编写的C#应用程序之间共享Sqlite数据库。我可以成功地在两个Java应用程序之间共享数据库(借助此问题的帮助),但是当我尝试在Xamarin中做同样的事情时,我遇到了以下错误:
Android.Database.Sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库
我觉得我有两个问题。
1.我没有正确设置Shared UserId。目前,我在我的主活动上方放置了以下属性。
[Register("my.user.id")]
我尝试在清单文件中使用android:sharedUserId =“my.user.id”,但是那会引发错误,并且无法部署到我的设备。
2.我不知道整个应用程序签名是如何工作的。因此,我的设备可能会将两个应用程序视为来自每个设备的不同发布者,并且不允许两者共享上下文。
编辑:
只是想添加如何使用相同证书签名两个应用程序以供参考。
Android证书通常为“C:\Users\userName\.android\debug.keystore”,而Xamarin证书通常位于“C:\Users\userName\AppData\Local\Xamarin\Mono for Android\debug.keystore”。我首先构建了Xamarin应用程序,因此我从xamarin文件夹中复制了debug.keystore文件到android文件夹中。(我相信这样做也可以,但还没有测试过)
1个回答

2

Xamarin.Android不支持通过ApplicationAttribute使用SharedUserId。(我猜没有人提出过这个问题)

参考:Android.App.ApplicationAttribute

在清单文件中添加共享用户ID,它将正常工作:

示例:

<application android:allowBackup="true" android:sharedUserId="com.sushihangover" android:icon="@mipmap/icon" android:label="@string/app_name"></application>

注意: 确保您手动卸载两个应用程序,添加 sharedUserId,重新构建并重新安装两个应用程序。
注意: 确保您的Java和Xamarin应用程序使用相同的签名证书。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接