我最近转向 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 应用程序也发生了非常相似的事情,它们在同一个数据库上运行。
提前致谢!