0

我们刚刚迁移了我们的应用程序以使用应用程序包 (aab) 而不是 apk。在测试过程中没有发现任何问题,但是当我们真正交付给用户时,我们开始收到奇怪的崩溃报告。

SQLite 似乎存在一些内部问题:

java.lang.RuntimeException: 
  at androidx.room.RoomTrackingLiveData$1.run (RoomTrackingLiveData.java:92)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:923)
Caused by: net.sqlcipher.database.SQLiteException: 
  at net.sqlcipher.database.SQLiteCompiledSql.native_compile (Native Method)
  at net.sqlcipher.database.SQLiteCompiledSql.compile (SQLiteCompiledSql.java:89)
  at net.sqlcipher.database.SQLiteCompiledSql.<init> (SQLiteCompiledSql.java:62)
  at net.sqlcipher.database.SQLiteProgram.<init> (SQLiteProgram.java:91)
  at net.sqlcipher.database.SQLiteQuery.<init> (SQLiteQuery.java:48)
  at net.sqlcipher.database.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:60)
  at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:2016)
  at net.sqlcipher.database.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1902)
  at net.sqlcipher.database.SQLiteDatabase.keyDatabase (SQLiteDatabase.java:2669)
  at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal (SQLiteDatabase.java:2599)
  at net.sqlcipher.database.SQLiteDatabase.openDatabase (SQLiteDatabase.java:1247)
  at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:1322)
  at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:166)

如果清除数据库或卸载应用程序然后重新安装,则不再重现该问题。

您认为这可能与 apk 到 aab 的迁移有关吗?有没有人遇到过这样的事情?

我试图在网上搜索类似的问题,但到目前为止我还没有发现任何类似的问题。

我打算尝试以下选项来解决这个问题:

  • 增加数据库版本并回退到特定版本的破坏性迁移,以重新创建手动解决问题的“清除数据”方法。
  • 尝试使用 Google 的新侧载逻辑。基本上,它会在应用程序启动时检测到缺少的必需组件并提示用户重新安装。它不漂亮,但总比崩溃好。我对这种方法有点怀疑,因为我们没有收到任何LinkageErrors 或ResourceNotFound错误,但我别无选择。
4

0 回答 0