在 Xamarin Forms 中从 APK 安装时应用程序崩溃

App crashed when installed from APK in Xamarin Forms

应用从 APK 安装时崩溃,但从 Visual Studio 通过 USB 连接时运行正常。

我在 C# 中使用 Visual Studio Xamarin Forms,我从 API 和位于服务器上的数据库获取数据。我测试了一个 apk,它运行良好。

停止工作时: 现在我做了一些更改,因为我的应用程序必须在没有互联网连接时模拟同样的工作,所以我使用 nuget sqlite-net-pcl 实现了 SQLite。因此,当我的应用程序连接到互联网时,该应用程序将在本地数据库中存储一些值,并且如果在任何时候检测到没有互联网,它将去并从本地数据库中获取最新信息。我一直在使用通过 USB 连接的 phone 进行测试,效果很好。

问题: 因此,我再次创建了 Apk 文件,安装后它显示了来自 API 的数据,但是当我单击第一个按钮时,它崩溃或只是关闭而没有任何消息。

我的代码:我不知道这里真正有用的是什么,但基本上这是我的本地数据库连接(此代码行出现在每个页面中):

private SQLiteConnection db = new SQLiteConnection(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "LocalDB.db3"));

这是我如何从本地数据库插入和获取数据的示例:

    private void InsertPisterosLocal()
    {
        //first delete table data
        //db.DeleteAll<T_Pisteros>();
        db.DropTable<T_Pisteros>();
        db.CreateTable<T_Pisteros>();

        foreach (var item in PisterosLista)
        {
            var DatosRegistro = new T_Pisteros
            {
                PisteroID = item.PisteroID,
                PisteroN = item.PisteroN
            };
            var num = db.Insert(DatosRegistro);
        }
    }

    public void GetPisterosLocal()
    {
        try
        {
            db.CreateTable<T_Pisteros>();
            List<T_Pisteros> PisterosLista = new List<T_Pisteros>();
            PisterosLista = db.Table<T_Pisteros>().ToList();
            pck_Pisteros.ItemsSource = PisterosLista;
        }
        catch (Exception)
        {
            throw;
        }
    }

这是清单(同样我不知道是否有任何帮助):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.gearsofsoftware.servlottery" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
    <application android:label="Premios Servicentro" android:icon="@mipmap/icon"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

我真的很祈祷有人能在这里帮助我,我觉得这对我来说是死胡同,我不知道该怎么办:(

安装 ADB 和 运行 logcat

日志如下:https://pastebin.com/304eFXMq

基本上关键行是: “SQLite.SQLiteException:没有这样的 table:T_Promo”

我认为此时不必调用本地数据库,在开始第二页时调用(当它崩溃时)并且此调用具有以下代码:

db.DeleteAll<T_Promo>();
db.CreateTable<T_Promo>();

我改成了

db.DropTable<T_Promo>();
db.CreateTable<T_Promo>();

现在工作正常。