qcril 一个版本逆向升级失败的log分析

从android P升级到android o终端不能正常工作。
这个问题本身是正常的。很多模块不支持 downgrade。恢复出厂设置即可。
比如没恢复前的telephone log报错:
AM load provider 失败, TelephonyProvider 不能downgrade to 1376264.

16020 04-09 10:32:05.880 6652 6652 D AndroidRuntime: Shutting down VM 
16021 04-09 10:32:05.881 6652 6652 W System.err: Application uncaught exception in thread "main" java.lang.RuntimeException: Unable to get provider com.android.providers.telephony.TelephonyProvider: android.database.sqlite.SQLiteException: Can't downgrade database from version 1703944 to 1376264 

设计时 telephony provider没有重载onDowngrade 函数.此函数抛出异常报错。 用户可以实现此函数。但是基本不建议这么做。

本篇文章关注qcril 模块的qcril db的报错。因为这次有点怪,是upgrade报错。下面分析为何走到upgrade,又为何upgrade失败。
项目比较老,android O和android P都是qcril而不是qcril-hal。

先上错误log:

 10:31:49.875  RILQ : RIL[0][rild] qcril_db_upgrade_get_version: Unable to prepare query SELECT VALUE from main.qcril_properties_table where PROPERTY = 'qcrildb_version' 
 10:31:49.875  RILQ : RIL[0][rild] qcril_db_upgrade_get_version: Unable to prepare query SELECT VALUE from main.qcril_properties_table where PROPERTY = 'qcrildb_version' 
 10:31:49.875  RILQ : RIL[0][rild] qcril_db_upgrade: Unable to open /vendor/radio/qcril_database/upgrade as a folder: No such file or directory

终端读不到main.qcril_properties_table的qcrildb_version。 这个怀疑main.qcril_properties_table不存在的概率大一些。如果有这个table不可能没有qcrildb_version.

进入qcril_db.c的qcril_db_open函数看:
androidP所用库:
在这里插入图片描述
androidO所用库:

用户的qcril.db放置的目录变了. androidP放在data/vendor下,androidO在data/misc下找,自然找不到。(这个版本的anrdoidO太老了。其实后面的anroidO版本也是data/vendor目录下的。)

找不到,那么升级前的版本号认为是多少呢?是0!这样命名要走降级流程,结果终端走了升级流程!
在这里插入图片描述

接着还有一个问题打印:
Unable to open /vendor/radio/qcril_database/upgrade as a folder: No such file or directory

qcril_db_upgrade函数被调用时,需要从 /vendor/radio/qcril_database/upgrade获取升级数据库的脚本集。但是/vendor/radio/qcril_database/upgrade目录没有。这个androidO版本的version是1,是最低版本了,所以不会存在/vendor/radio/qcril_database/upgrade,自然就找不到了。

其他查阅链接 :

https://cloud.tencent.com/developer/section/1419799

http://www.runoob.com/cprogramming/c-function-sscanf.html
http://www.linuxguruz.com/man-pages/scandirat/
http://www.man7.org/linux/man-pages/man3/scandir.3.html

sql attach语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值