FOTA/OTA之後启动第三方APP出現APP Crash

1、问题  
用FOTA下载OTA包,下载完毕更新;
  更新完毕后点击多个三方APP无法进入,提示报错(这些APK都是正常安装,非预置)。
报错信息类似:
Caused by: java.io.IOException: Failed to remove obsolete file from /data/dalvik-cache/arm/data@app@jp.naver.line.android-1@base.apk@classes.dex when searching for dex file /data/app/jp.naver.line.android-1/base.apk: Permission denied

2、解决方法

1. 如果apk之前有安装过,OTA升级后会检测到该apk的odex是旧的需要重新去提取,但是因为这个apk贵司长时间没有使用,L版本上默认PackageManagerService判断超过7天,则开机时不会做dexopt而报这种错误,此时一般重启之后这些apk会正常运行。
上述code中 mDexOptLRUThresholdInMills的值是7天,即若此apk上次使用时间(then=pkg.mLastPackageUsageTimeInMills)+7天还小于当前时间(now),则此apk被判别为never不会被使用的apk,所以就不做dexopt了。那么异常时会出现上面的log。

      2.发生异常时如果点击了这几个apk且发现其无法使用(无法使用的原因可能是boot.oat有更新,此时apk的odex档是旧的,需要重新提取才可正常运行),即此时mLastPackageUsageTimeInMills会更新。
所以重新开机后这个条件if (then + mDexOptLRUThresholdInMills < now)就不会满足,即这几个apk会做dexopt,此时能够正确提取odex,这时apk能够正常运行。
3. 这是Google在L版本上的机制,不建议修改,如果需要规避,可以将i.remove();这行给注释掉,即超7天时仍可以正常提取odex.

Android 系统 (39)---OTA后启动第三方APP出现APP Crash相关推荐

  1. Android系统刷机后第一次启动很慢的原因

    转自:Android系统刷机后第一次启动很慢的原因 - 走看看 在做Android内核开发的过程中,我们会发现,每次编译完系统源码,烧录到设备/手机中后,第一次启动都会很慢很慢,要好几分钟甚至十几分钟 ...

  2. Android系统开机到Launcher启动流程分析

    本文基于Android10.0的源码. 由于google团队在对framework层代码进行大量重构,所以代码变动还是挺大的. 常见基础问题: SystemServer系统服务进程是如何创建的?Lau ...

  3. Android系统触摸屏移植后出现小圆圈

    移植FT6X系列的触摸屏后,发现系统工作并不能像正常触摸屏那样,而是出现了一个小圆圈,像鼠标一样移动,进过查找相关资料,终于发现出现这种状况的原因是因为Android系统把触摸屏当成触摸板,所以才会出 ...

  4. linux otg状态,Android系统插入OTG后不休眠

    这两天一直忙着搞插入OTG死机的问题.有时候机器上面插入个U盘,鼠标,或者硬盘,如果这个时候没有接充电器的话,有很大的概率机器直接死机了,而且必须插入充电器才能开机.实测电池电压基本为0,原来是电池过 ...

  5. Android从一个应用程序启动第三方应用app

    需求场景: 在自己开发的应用程序里,有个跳转到其他应用的按钮,比如分享到"新浪微博",当点击这个按钮时,先判断手机中是否有安装"新浪微博"这个程序,有则启动&q ...

  6. Android 系统(153)---全面屏项目很多APP占不满全屏

    全面屏项目很多APP占不满全屏 刘海屏项目,分辨率720x1498设置系统除外壁纸显示不全,且部分界面底部显示高度有2个navigationbar高度 解决方案: 那是因为全面屏的长宽比超过了1.86 ...

  7. android 系统中静音后使得音量减键不能解除静音

    在以下位置做如下注释掉其中一部分即可(最后面几行): frameworks / base/services/core/java/com/android/server/audio/AudioServic ...

  8. Android 系统(15)---Launcher启动过程

    Launcher概述 SystemServer进程主要用于启动系统的各种服务,其中就包含了Launcher服务,LauncherAppService. Android系统默认第一个启动的应用程序是Ho ...

  9. android休眠后恢复线程,关于Android系统休眠后,线程的执行情况

    理论上,android系统休眠后,app进程会被挂起,所以相关的执行线程也会被挂起,那些java线程的操作例如:wait,await,sleep,循环阻塞,handler的delay,线程池的dela ...

最新文章

  1. 基于PHP的图片共享网站设计,基于PHP实现的WEB图片共享系统(SQL数据库),毕业论文设计...
  2. git找回误删的文件
  3. 升级WordPress时提示”另一更新正在进行”
  4. 王者荣耀服务器响应超时,“团战”打游戏,为什么你的网络信号总是连接超时?...
  5. 分布式系统消息中间件——RabbitMQ的使用基础篇
  6. /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的作用
  7. 排序函数(sort()、sorted()、argsort()函数)
  8. 【转】Zookeeper入门
  9. 手机游戏中的社交互动与任务剧情
  10. shell脚本编程之循环控制语句(continue/break/sleep)
  11. 史上最全最基础的Oracle数据库教程(入门一)介绍Oracle默认用户
  12. 荣耀MagicBook 2019 Intel版发布:性能新升级 续航长达15小时!
  13. 2021年N1叉车司机模拟考试题库及N1叉车司机操作证考试
  14. 基本组件之botton
  15. 2021-2027全球与中国镀铬钢管市场现状及未来发展趋势
  16. android分辨率选择,安卓Android手机屏幕壁纸分辨率选择技巧
  17. 音视频开发 人脸标定 animoji 动态贴纸 小项目练习总结
  18. Unity Mathf【Deg Rad】- 关于数学运算中的度与弧度
  19. HTML一键打包APK工具(安卓应用APP)
  20. Cartographer ROS 整合(翻译) 2019.4.2更新

热门文章

  1. 对I2C总线协议的一些理解
  2. ajax 刷新 保持原位置_JavaEE之Ajax第一课
  3. 菜鸟学习笔记:Java基础篇3(面向对象思想、程序执行过程内存分析、面向对象重要概念)
  4. abb机器人searchl报错_ABB机器人编程指令与函数
  5. java并发:interrupt进程终止
  6. sqlsugar的sum的用法
  7. https证书设置以及设置301跳转
  8. jquery.dataTables列中内容居中问题?求解?
  9. emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
  10. BeginnersBook MongoDB 教程