【发布时间】:2017-06-06 07:11:56
【问题描述】:
我最近迁移到 SQLite-net,因为它支持 Android 7.0 中的新变化,但它给我带来了重大问题。我认为它与链接器有关,但不太确定如何处理问题。
首先,如果在调试和发布中构建我的应用程序,它可以完美运行。没有问题。如果我随后归档我的应用程序(生成签名的 APK),它会根据链接器设置在不同的点开始崩溃。
如果我将我的应用设置为使用 SDK 和用户程序集构建,我的应用会立即崩溃。这是日志的一部分:-
Caused by: android.runtime.JavaProxyThrowable: SQLite.SQLiteException: duplicate column name: objectId
at SQLite.SQLite3.Prepare2 (SQLitePCL.sqlite3 db, System.String query) [0x0001e] in <1096ddd2a2894a619279903f1fa07799>:0
at SQLite.SQLiteCommand.Prepare () [0x00011] in <1096ddd2a2894a619279903f1fa07799>:0
如果我将我的应用设置为仅使用 Sdk,它的工作方式会有所不同。它实际上启动了应用程序,下载了一半的数据。如果我尝试通过添加更多来更新数据,它会崩溃。该应用程序将在每次启动时崩溃,直到我删除该应用程序的整个本地存储,然后它才能完美运行。
我也读过关于跳过链接程序集的文章,在这种情况下,我跳过了所有与 SQL 相关的库。
--linkskip=SQLite-net --linkskip=SQLite.NET --linkskip=SQLite.Net.Platform.XamarinAndroid --linkskip=SQLite.Net.Platform.XamarinAndroidN --linkskip=SQLiteNetExtensions --linkskip=SQLitePCLRaw.batteries_green --linkskip=SQLitePCLRaw.batteries_v2 --linkskip=SQLitePCLRaw.core --linkskip=SQLitePCLRaw.lib.e_sqlite3 --linkskip=SQLitePCLRaw.provider.e_sqlite3
有没有人知道如何解决这个问题。我想尽快发布一个应用程序,但无法解决这个问题。我的 iOS 应用也发生了非常相似的事情,它们在同一个数据库上运行。
提前致谢!
【问题讨论】:
-
你能找出是哪种 SQL 语言出现了重复列错误吗?您可以选择两个具有相同列名“objectId”的表。
-
谢谢迈克。不太确定发生了什么,但我删除了对我拥有的每个 SQLite 库的所有引用并重新安装了它们。没有任何代码更改,问题很快就消失了。我也删除了跳过链接。我认为可能是我引用了 2 个无法一起使用的单独 SQLite 库。
-
既然您解决了问题,请关闭问题。谢谢。
-
@jgoldberger 我没有足够的积分来结束一个问题。
-
您也可以选择回答并接受您自己的回答。在搜索没有答案的问题时,只需将其从搜索结果中删除即可。 :-)
标签: xamarin xamarin.ios xamarin.android sqlite-net sqlite.net