Недавно я перешел на 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, которое работает в той же БД.
Заранее спасибо!