概述
OTA升级后概率性出现卡在开机动画界面无法退出
OTA升级之后,手机会概率性卡在开机动画界面,log 显示 media.player died:
01-01 20:06:46.273062 288 288 E art : Cannot patch secondary image '/system/framework/boot-framework.art', clearing dalvik_cache and restarting zygote. //<==zygote重启
01-01 20:06:46.298441 247 247 I ServiceManager: service 'media.player' died
01-01 20:06:46.306115 513 574 D BootAnimation: threadLoop() movie() //<==开始播放开机动画
导致开机动画退出不了,也没有开机铃声播放。
原因:
OTA之后第一次开机,由于zygote检测到boot-framework.art这支文件的校验和不对(system分区在OTA升级后会更新,但是data分区下的文件在OTA升级中不更新仍旧是旧版本的,造成data和system目录下的.art、.oat文件不匹配),于是clearing了dalvik-cache里面的内容。zygote重启,zygote挂掉之后,引起media server挂掉,进而导致没有声音。也无法满足开机动画退出条件checkExit();。
解决方法:
修改BootAnimation.cpp:
491bool BootAnimation::threadLoop()
492{
……
498 status_tmediastatus = NO_ERROR;
……
508 if (mediastatus == NO_ERROR) {
509 ALOGD("mediaplayer is initialized");
510 Parcel* attributes = new Parcel();
511 attributes->writeInt32(AUDIO_USAGE_MEDIA); //usage
512 attributes->writeInt32(AUDIO_CONTENT_TYPE_MUSIC); //audio_content_type_t
513 attributes->writeInt32(AUDIO_SOURCE_DEFAULT); //audio_source_t
514 attributes->writeInt32(0); //audio_flags_mask_t
515 attributes->writeInt32(1); //kAudioAttributesMarshallTagFlattenTags of mediaplayerservice.cpp
516 attributes->writeString16(String16("BootAnimationAudioTrack")); // tags
517 mediaplayer->setParameter(KEY_PARAMETER_AUDIO_ATTRIBUTES, *attributes);
518 mediaplayer->setAudioStreamType(AUDIO_STREAM_MUSIC);
519 mediastatus = mediaplayer->prepare();
520 }
521 if (mediastatus == NO_ERROR) {
522 ALOGD("media player is prepared");
523 mediastatus = mediaplayer->start();
524 }
//If the mediastatus is not NO_ERROR, mBootVideoPlayState = MEDIA_ERROR.
if(mediastatus != NO_ERROR){ //add code
mBootVideoPlayState = MEDIA_ERROR; //add code
} //add code
最后
以上就是酷炫汽车为你收集整理的Android 系统(208)---OTA升级后概率性出现卡在开机动画界面无法退出的全部内容,希望文章能够帮你解决Android 系统(208)---OTA升级后概率性出现卡在开机动画界面无法退出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复