📅  最后修改于: 2023-12-03 14:52:39.040000             🧑  作者: Mango
在Android应用的开发过程中,经常会用到领域数据库,包括SQLite和Room等。在调试过程中,我们需要查看和定位数据库中的数据,以帮助我们快速排查问题。本文将介绍如何在Android Studio中查看和定位领域数据库。
Stetho是Facebook开源的一个Android库,可以帮助我们在Chrome中查看Android应用中的SQLite数据库。在项目的build.gradle中添加如下依赖:
dependencies {
// ...
debugImplementation 'com.facebook.stetho:stetho:1.5.1'
releaseImplementation 'com.facebook.stetho:stetho-no-op:1.5.1'
}
在Application中初始化Stetho,代码如下:
import com.facebook.stetho.Stetho
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Stetho.initializeWithDefaults(this)
}
}
在Chrome中打开chrome://inspect/#devices,选择设备和应用,并点击Inspect进入DevTools。在DevTools的Application面板中,选择左侧的Storage-Web SQL,即可看到应用中的SQLite数据库。展开数据库名字,可以看到表的列表,点击表的名称,可以看到表中的数据。
虽然Stetho是专门为SQLite而设计的,但是它同样可以用于Room。需要导入另外一个库:
dependencies {
// ...
debugImplementation 'com.facebook.stetho:stetho-room:1.5.1'
}
在Application中初始化Stetho,代码如下:
import com.facebook.stetho.Stetho
import com.facebook.stetho.okhttp3.StethoInterceptor
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Stetho.initializeWithDefaults(this)
// 添加网络拦截器
OkHttpClient.Builder()
.addNetworkInterceptor(StethoInterceptor())
.build()
}
}
与SQLite不同的是,Room数据库没有直接的入口可以进入DevTools查看。需要在Chrome的Console中执行以下代码:
// 导入Stetho
var stetho = require('stetho/js/stetho-toplevel');
// 打开数据库
var database = await stetho.getDatabase({databaseId: 'your_database_id'});
// 执行SQL语句
var results = await stetho.executeSql({databaseId: database.databaseId, query: 'SELECT * FROM your_table_name'});
console.table(results);
其中,databaseId
可以在DevTools的Console面板中看到。
通过Stetho,我们可以方便地在Chrome中查看和定位Android应用中的领域数据库,大大提高了调试效率。