はじめに
Xamarinのサポート終了が正式に決まり、今あるアプリをMAUIで書き直さなければならなくなりました。
そこでローカルデータベースとして利用していたSQLiteがAndroidだとそのまま使えなかったので、メモとして残しておきます。
(Windowsでは動きました。)
症状
以下のNuGetパッケージを利用していました。
SQLite-net-PCL
エラーが出るのはデータベースファイルを見つける時です。
例えば下記のようなコードを書くとします。
public class Database
{
readonly SQLiteAsyncConnection _database;
public Database(string dbPath)
{
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<Person>().Wait();
}
}
以下のようにデータベースのパスを指定してデータベースに接続します。
var db = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "sample.db3"));
下記のエラーが出ます。
System.AggregateException: 'One or more errors occurred. (The type initializer for 'SQLite.SQLiteConnection' threw an exception.)'
対策
色々試してみましたが、以下のNuGetパッケージをインストールすれば、解決しました。
SQLitePCLRaw.provider.dynamic_cdecl
まとめ
いかがだったでしょうか?.NET MAUIがやはりマイナーなのか情報が少ないため、トラブル時に時間がかかってしまいますね。
他にも細かな不具合やバグがあるんですが・・・。MAUI大丈夫なんだろうか・・・。
ではまたつまずいた点があれば共有します。