出错信息如下: 123456789101112131415161718192021222324252609-11 15:25:48.414 858 858 E System : ******************************************09-11 15:25:48.414 858 858 E System : ************ Failure starting system services09-11 15:25:48.414 85...
虚拟按键隐藏过程log
公司最近开始搞Android P的项目,有一天在新的代码上出现了一个奇怪的问题。在点完开机向导后,进入到launcher,发现虚拟按键中的recents不见了,点击那个区域也没反应,但是在系统配置发生改变时(比如切换言)recents又出来了。 刚开始只有一个user版的手机,开机向导过程中的log抓不到,怀疑是别人改了SystemUI造成的也没法验证,为了方便分析问题,只能先编一个userdebug版本。编译时间比较长,闲着也是闲着,就先在代码里看下有没有什么头绪吧。 在SystemUI...
ActivityManagerService启动过程
ActivityManagerService简称AMS,也就是通常说的组件管理器,是系统核心服务之一,用于对四大组件进行管理,包括创建四大组件,组件生命周期管理等。这里先先了解下AMS的创建过程。代码基于Android P。 AMS的启动是在SystemServer中进行的。SystemServer中服务启动分为三个过程: 123startBootstrapServices();startCoreServices();startOtherServices(); AMS的启动贯穿了这三个过...
应用安装-点击apk安装
之前了解了通过adb进行应用安装的过程,现在了解在应用中点击apk进行应用安装的过程,代码基于Android P。安装流程的PKMS部分和通过adb安装类似,这里主要是了解下应用安装发起过程和PackageInstaller相关代码。 发起安装该部分以DocumentsUI为例,了解应用安装发起的过程。打开Files应用,切换到内部存储,找到apk,点击安装。对应的代码如下: 1234567891011private void onDocumentPicked(DocumentInfo d...
应用安装-adb方式进行安装
adb方式进行安装adb 相关代码在system/core/adb/中,入口在/system/core/adb/client/main.cpp的main方法中: 1234int main(int argc, char** argv) { adb_trace_init(argv); return adb_commandline(argc - 1, const_cast<const ch...
Android “original-package” 机制解析
Android “original-package” 机制解析原文:https://blog.csdn.net/hwy584624785/article/details/51774580 问题 之前项目上遇到一个问题:手机系统从版本 A 通过 FOTA 升级到版本 B 后,系统源码中的输入法(LatinIME.apk,下面称 LatinIME)不见了!也就是设置中语言和输入法选项没有 Android Keyboard 这一项,并且设置中的应用选项中也找不到。 问题情况 先了解了一下两个版本...
应用安装-开机安装应用
一、应用安装类型1. 安装方式: 安装系统APK和预制APK时,通过PMS的构造函数中安装,即第一次开机时安装应用,没有安装界面。 网络下载安装,通过应用商店等,即调用PackageManager.installPackage(),有安装界面。 通过adb工具安装,没有安装界面,它通过启动pm脚本的形式,然后调用com.android.commands.pm.Pm类,之后调用到PMS.installStage()完成安装。 安装本地apk,有安装界面,由PackageInstaller系...
HashMap、LinkedHashMap、三级缓存
HashMapHashMap在迭代器创建后,通过iterator的remove()方法之外的其他方式改变HashMap结构(增加或删除元素),都会抛出ConcurrentModificationException异常(fail-fast),因为HashMap不支持并发操作,预期在将来产生无法预料的后果,不如马上抛出错误。这种fail-fast的行为并不一定总是有效,因此在程序中不应该依赖这种行为。 HashMap中的树节点size是普通节点的两倍左右,所以在桶里的节点不多的时候(阈值为6,...