matrix icon indicating copy to clipboard operation
matrix copied to clipboard

sqlitelint使用addConcernedDB的问题

Open 18Gray opened this issue 5 years ago • 5 comments

1.sqlitelint这里一定要用addConcernedDB吗?如果一定要在调用的地方加上这一句,那一个大程序去接入数据库检测成本太高了。而且也跟SqlExecutionCallbackMode.HOOK这种方式的描述相悖。 2.demo中的数据库检测页面,点击start test来测试数据库语句,没有反应,需要加上notifySqlExecution这句,还是跟HOOK的描述不符。

18Gray avatar Aug 13 '19 10:08 18Gray

  1. addConcernedDB主要是为了拿到SQLiteDatabase对象。对于一个数据库,只要在创建的时候调用一次即可了。
  2. 如果使用了HOOK的模式,那么不需要调用notifySqlExecution。否则可能是发生了兼容bug,导致hook不成功,所以拿不到运行的sql语句。这里麻烦提供更多的信息,比如android版本、机型之类。

ps.以上讨论都是基于android平台

lolobug avatar Aug 13 '19 11:08 lolobug

1.以我的理解,在io那里也是用的elf hook,不需要再进行类似于addConcernedDB这样的初始化,数据库这里也是用的elf hook也应该不需要在java层做初始化。创建时候调用addConcernedDB会有侵入性,想不要侵入性还需要自己写插桩,这样接入就比较麻烦了。 2.调用数据库语句这里我拿到的模式是HOOK。华为P20,android 9.0。addConcernedDB会有进入数据库异常信息页面,io操作也会返回,说明可以hook成功。

18Gray avatar Aug 14 '19 03:08 18Gray

如果仅是以debugCompile引入sqlitelint,每次创建数据库时都addConcernDB则在release下会找不到类。Application初始化可以分debug/release进行,但是数据库创建再分包就比较麻烦了。

18Gray avatar Aug 21 '19 07:08 18Gray

  1. addConcernedDB主要是为了拿到SQLiteDatabase对象。对于一个数据库,只要在创建的时候调用一次即可了。
  2. 如果使用了HOOK的模式,那么不需要调用notifySqlExecution。否则可能是发生了兼容bug,导致hook不成功,所以拿不到运行的sql语句。这里麻烦提供更多的信息,比如android版本、机型之类。

ps.以上讨论都是基于android平台

我也遇到了这个问题,我在接入的过程中发现要 addConcernedDB 是很麻烦的,正如上面的同学所说,接入成本太大了。我看了下最新的实例似乎还是需要 addConcernedDB ?

xiaoshitounen avatar Nov 02 '21 09:11 xiaoshitounen

addConcernedDB 能否添加wcdb的SQLiteDatabase? android.database.sqlite.SQLiteDatabase 和 com.tencent.wcdb.database.SQLiteDatabase 能否同时存在。

zr940326 avatar Jun 28 '22 03:06 zr940326