系统:android 4.3
现象:动态logo跑完后,卡住不显示launcher,等待一段时间后重启
log:
I/PackageManager( 3054): Expecting better updatd system app for com.android.providers.settings; removing system app
SettingsProvider.apk是升级前的旧的app,不能使用
导致下面ActivityManagerService启动失败:
E/ActivityThread( 3054): Failed to find provider info for setting E/System ( 3054): java.lang.NullPointerException E/System ( 3054): at
android.provider.Settings$NameValueCache.getStringForUser(Settings.java:865)
Systemserver在启动AcitivtyManagerservice时需要SettingsProvider.apk,而这个包不能使用导致CoreSettingsObserver初始发生空指针。
AcitivtyManagerservice为关键服务,启动失败后车机无法启动,超时会重启。
正常的升级过程:
-旧的SettingsProvider.apk被标记不能使用,
-删除标记不能使用的SettingsProvider.apk,
-拷贝升级包中SettingsProvider.apk至system/app,至此完成system app的升级
详细的流程请参考PackageManagerService,对于systemapp的替换详查replaceSystemPackageLI函数。
升级过程中第1步执行完毕升级异常中断,一般为断电情况发生。最终导致上述卡logo现象。