
前提・実現したいこと
Android StudioでJavaを使ってアプリを制作しております。
API 28のエミュレータでテストすると
SQLiteDatabase.openDatabaseのタイミングで
アプリが落ちてしまうエラーが発生します。
リリース済みのアプリのため、
今までは同じソースでも問題なく動いており、
またAPI 27までのエミュレータ・Android端末では
問題なく動くため、
理由がわからず困っております。
発生している問題・エラーメッセージ
画面(MainActivity)のクリエイト時に、
SQLiteOpenHelperを使用して
assetsフォルダ内に入れたsample.db(テーブルやデータは既に入れてあります)を
開いています。
SQLiteDatabase.openDatabaseのタイミングでエラーが発生します。
- MainActivityからの呼び出し(onCreate内)
Java
1 MyDatabaseHelper.CheckDataBase();
- SQLiteOpenHelper関係
Java
1public class MyDatabaseHelper extends SQLiteOpenHelper { 2 3 private static File myFile; 4 5 6 //・・・・・・省略 7 8 MyDatabaseHelper(Context context) { 9 super(context, "sample.db", null, 1); 10 myFile = context.getDatabasePath("sample.db"); 11 } 12 13 //・・・・・・省略 14 15 public void CheckDataBase() throws IOException { 16 String dbPath = myFile.getAbsolutePath(); 17 SQLiteDatabase checkDb = null; 18 try { 19 checkDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY); 20 } catch (SQLiteException e) { 21 Log.i("test", e.getMessage()); 22 } 23 } 24} 25
- エラー内容
Java
1E/SQLiteLog: (14) cannot open file at line 36667 of [0c55d17973] 2 (14) os_unix.c:36667: (2) open(/(絶対パス)/sample.db) - 3E/SQLiteDatabase: Failed to open database '/(絶対パス)/sample.db'. 4 android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database 5 at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 6 at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:211) 7 at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:195) 8 at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:503) 9 at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:204) 10 at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:196) 11 at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:880) 12 at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:865) 13 at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:766) 14 at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:714) 15 at (パッケージ名).MyDatabaseHelper.CheckDataBase(MyDatabaseHelper.java:320) 16 at (パッケージ名).MainActivity.onCreate(MainActivity.java:244) 17 at android.app.Activity.performCreate(Activity.java:7136) 18 at android.app.Activity.performCreate(Activity.java:7127) 19 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 20 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) 21 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 22 at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 23 at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 24 at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 25 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 26 at android.os.Handler.dispatchMessage(Handler.java:106) 27 at android.os.Looper.loop(Looper.java:193) 28 at android.app.ActivityThread.main(ActivityThread.java:6669) 29 at java.lang.reflect.Method.invoke(Native Method) 30 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 31 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 32I/test: unknown error (code 14 SQLITE_CANTOPEN): Could not open database 33
試したこと
エミュレータは、
API 28のPixel及び
API 28のNexus 5Xで落ちます。
API 27のPixel及び
API 26のPixelでは動きます。
また、リリース後、特に大きなクラッシュの報告もないため、
自分でテストしている実機以外の端末でも
問題なく動いているのではと思います。
補足情報(FW/ツールのバージョンなど)
MacOS High Sierraにて制作
Android Studio 3.1.4
回答1件
あなたの回答
tips
プレビュー