Kernel: v3.0.36
Device: rk3188
Platform Version: Android 4.4.2
前言:
最近遇到一个奇怪的问题,恢复出厂设置后,在/system/priv-app/下的一个应用突然启动不了,查看日志发现导致启动不了得原因是签名不匹配。
分析过程:
应用特点
- 该应用在恢复出厂设置之前是正常启动,也没报签名不对。
- 该应用是在AndroidManifest.xml中使用了android:sharedUserId=”android.uid.system”。
- 该应用是使用了系统签名的。
应用经历了什么?
恢复出厂设置之前,应用原本是经过系统编译进升级包中并使用的系统签名,后来经过Anroidstudio编译使用debug签名进行了调试,并push到/system/priv-app/,之后应用一直正常使用,也未报签名有问题。
理论上使用debug签名调试,签名就应该已经有问题了,应用根本就启动不了,但实际上应用正常调试,并未出问题。
猜测
应用启动时,apk被解压加载,签名被解析进dalvik-cache中。后面使用debug签名调试时,使用的还是之前dalvik-cache中的签名。
恢复出厂设置之后,dalvik-cache中的签名被删除,apk被重新解压,此时系统启动应用时,识别出debug签名不能使用sharedUserId,因此应用启动不了。
验证
后续上验证结果。
转载请注明出处:http://www.wolfnx.com/2019/04/15/SignatureAfterFactoryReset
作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com