matrix
matrix copied to clipboard
sqlitelint使用addConcernedDB的问题
1.sqlitelint这里一定要用addConcernedDB吗?如果一定要在调用的地方加上这一句,那一个大程序去接入数据库检测成本太高了。而且也跟SqlExecutionCallbackMode.HOOK这种方式的描述相悖。 2.demo中的数据库检测页面,点击start test来测试数据库语句,没有反应,需要加上notifySqlExecution这句,还是跟HOOK的描述不符。
- addConcernedDB主要是为了拿到SQLiteDatabase对象。对于一个数据库,只要在创建的时候调用一次即可了。
- 如果使用了HOOK的模式,那么不需要调用notifySqlExecution。否则可能是发生了兼容bug,导致hook不成功,所以拿不到运行的sql语句。这里麻烦提供更多的信息,比如android版本、机型之类。
ps.以上讨论都是基于android平台
1.以我的理解,在io那里也是用的elf hook,不需要再进行类似于addConcernedDB这样的初始化,数据库这里也是用的elf hook也应该不需要在java层做初始化。创建时候调用addConcernedDB会有侵入性,想不要侵入性还需要自己写插桩,这样接入就比较麻烦了。 2.调用数据库语句这里我拿到的模式是HOOK。华为P20,android 9.0。addConcernedDB会有进入数据库异常信息页面,io操作也会返回,说明可以hook成功。
如果仅是以debugCompile引入sqlitelint,每次创建数据库时都addConcernDB则在release下会找不到类。Application初始化可以分debug/release进行,但是数据库创建再分包就比较麻烦了。
- addConcernedDB主要是为了拿到SQLiteDatabase对象。对于一个数据库,只要在创建的时候调用一次即可了。
- 如果使用了HOOK的模式,那么不需要调用notifySqlExecution。否则可能是发生了兼容bug,导致hook不成功,所以拿不到运行的sql语句。这里麻烦提供更多的信息,比如android版本、机型之类。
ps.以上讨论都是基于android平台
我也遇到了这个问题,我在接入的过程中发现要 addConcernedDB 是很麻烦的,正如上面的同学所说,接入成本太大了。我看了下最新的实例似乎还是需要 addConcernedDB ?
addConcernedDB 能否添加wcdb的SQLiteDatabase? android.database.sqlite.SQLiteDatabase 和 com.tencent.wcdb.database.SQLiteDatabase 能否同时存在。