Xamarin Forms Portable
프로젝트에서 Sqlite
을 사용하고 있으며 iOS
및 UWP
에 내 응용 프로그램을 성공적으로 실행합니다. Android에서는 Android 6.0 에뮬레이터에서 애플리케이션을 실행할 수 있지만 Android Ore에서는 앱을 설치했지만 시작할 때 충돌이 발생합니다. 나는 다음과 같은 문제에 직면하고있다.Xamarin Forms - Sqlite android Oreo 런타임 .JavaProxyThrowable
문제 :
android.runtime.JavaProxyThrowable (래퍼 관리로부터 native) SQLite.Net.Platform.XamarinAndroid.SQLiteApiAndroidInternal에서 : sqlite3_open_v2 (바이트 [] INTPTR &, INT, INTPTR) SQLite.Net.Platform.XamarinAndroid.SQLiteApiAndroid.Open (System.Byte [] 파일명 SQLite.Net.Interop.IDbHandle & DB, 선택 System.Int32 플래그 System.IntPtr 이름의 zvfs)은 0x00000를] 위치에 in < 8dbf6f f85082469fb9d4dfaa9eae6b69> 0 SQLite.Net.SQLiteConnection..ctor에서 (SQLite.Net.Interop.ISQLitePlatform sqlitePlatform, 선택 System.String DatabasePath에, SQLite.Net.Interop.SQLiteOpenFlags openFlags, 선택 System.Boolean storeDateTimeAsTicks, SQLite.Net. IBlobSerializer 시리얼, System.Collections.Generic.IDictionary
2[TKey,TValue] tableMappings, System.Collections.Generic.IDictionary
2 TKEY, TValue] extraTypeMappings, SQLite.Net.IContractResolver 리졸버) 0x000a2] < 8f2bb39aeff94a30a8628064be9c7efe>에서 0 SQLite.Net.SQLiteConnectionWithLock..ctor (AT SQLite.Net.Interop.ISQLitePlatform sqlitePlatform, SQLite.Net.SQLiteConnectionString 연결 문자열, System.Coll project.Models.Database + <> c__DisplayClass1_0 에서 0 : < 8f2bb39aeff94a30a8628064be9c7efe>에서 ections.Generic.IDictionary2[TKey,TValue] tableMappings, System.Collections.Generic.IDictionary
2 TKEY, TValue] extraTypeMappings) 0x0002e]. < .ctor> b__0() [0x0001d] < 7df232f34ab8474d9153e3809af4eda8>에서 : SQLite.Net.Async.SQLiteAsyncConnection.GetConnection()은 0x00000] < 563d605f9f014eeeb32fd4a27b4d142e>시 0 : 0에서 SQLite.Net.Async.SQLiteAsyncConnection + < > c__DisplayClass11_0.b__0 () 0x00006]에 < 563d605f9f014eeeb32fd4a27b4d142e> 0 System.Threading.Tasks.Task에서 0 System.Threading.Tasks.Task`1 [TResult] .InnerInvoke() 0x0000f] 시 .Execute() [0x00010] in : 0에서 mono.java.lang.RunnableImplementor.n_run (네이티브 메서드)에서 mono.java.lang.RunnableImplement or.run (RunnableImplementor.java:30) 에서 android.os.Handler.dispatchMessage (Handler.java:98)에서 android.os.Handler.handleCallback (Handler.java:789)에서
android.os.Looper .loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6541) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os. Zygote $ MethodAndArgsCaller.run (Zygote.java:240) at com.android.internal.os.ZygoteInit.main (ZygoteInit.자바 : 767)
연결을 생성하기 위해 :
public Database(string databaseName)
{
var pathToDatabaseFile = DependencyService.Get<Interfaces.ISQLite>().GetLocalPathToFile(databaseName);
var platform = DependencyService.Get<Interfaces.IPlatformProvider>().GetPlatform();
_connection = new SQLiteAsyncConnection(() =>
new SQLiteConnectionWithLock(platform, new SQLiteConnectionString(pathToDatabaseFile, false)));
_connection.CreateTableAsync<SqlitePage>().Wait();
}
모든 프로젝트
GetPlatform
에서
및 GetLocalPathToFile
이 구현됩니다
return new SQLitePlatformAndroid();
및
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), fileName);
패키지를 내가 Sqlite에 사용하는 위치 :
- SQLite.Net.Async-PCL
- SQLite.Net.Core-PCL
- SQLite.Net-PCL
어떤 아이디어?