ChenYuHan Blog

不要再摸鱼了,起来写BUG

Android AutoMotive系统预置GMS

GMS介绍 GMS全称为GoogleMobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,是谷歌程序运行的基础。 GMS提供有GooglePlay、Search、Google语音、Gmail、Contact Sync、Calendar Sync、Talk、Google Maps、Street View、YouTube、Android Market...

Android蓝牙短信功能开发

Android蓝牙短信功能开发 由于我司是做车机中控的,目前需要在车机上实现与蓝牙手机相连,并通过蓝牙进行短信发送和接收的功能,针对这一功能的实现方式做个简单的记录。 文档目录说明 一、蓝牙短信协议规范 二、协议SDK文件接口说明 三、蓝牙MapClient协议支持 四、蓝牙短信接收功能开发   五、蓝牙短信发送功能开发 以下开发基于Android 9.0 车...

Android 按键映射kl文件编写简析

以下内容需要在驱动正常的情况下进行 kl文件 kl(key layout)文件是一个映射文件,是标准linux与anroid键值映射文件,kl文件可以有很多个,但是它有一个使用优先级: 1 2 3 4 5 6 7 8 /system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl /system/usr/keylayout/V...

解决Android 应用targetSdkVersion小于24(Android N)运行在高版本设备无法全屏的BUG

前言 进行公司车机设备开发时,由于屏幕比例比较特殊(1920x720),导致部分应用显示时左侧和底部有很大的黑边,使用dumpsys分析黑边的View,移除后发现仍存在,后确定为低版本默认比例问题,耗费了几个小时,记录下这个问题。 出现问题的条件: Android 应用:targetSdkVersion < 24 (Android N); 设备的分辨率宽高比大于1.86(1...

Android persistent属性原理分析

Android persistent属性原理分析 [TOC] 以下代码基于Android9.0 persistent属性的定义 开发系统应用时,有时我们需要应用常驻,被杀死后能够自动重启,此时就需要使用到persistent属性, 下面是关于该属性在framework层的定义,属性的定义位于 persistent属性定义在platform/frameworks/base/core/res...

一个简单的HIDL开发笔记

一个简单的HIDL开发笔记 个人学习总结 一、创造HIDL实例相关文件 创建自己的HAL层文件目录 这里我以我自己的源码目录platform/vendor/mediatek/hardware/interfaces目录为例,在该目录下创建cyhhidl目录; 1 2 cd vendor/mediatek/hardware/interfaces mkdir -p cyhhidl/1.0/def...

实现一个简单开机自启服务

实现一个简单开机自启服务 作为一个简单的总结,以我自己开发的测试服务testautostart为例,主要分为以下四个部分 在platform/vendor/xxxx/xxxx目录下创建一个自定服务的文件夹testautostart,用于存放程序代码和makefile文件和依赖库等东西; 编写自定Service代码和makefile文件Andorid.mk; 通过mm编译后,在...

SystemUI StatusBar移动信号图标更新流程

SystemUI StatusBar 手机信号相关图标的显示和更新流程分析 以下源码基于AC8015版 android 9.0 StatusBar的图标控制器 SystemUI中StatusBar的图标控制器实现类为StatusBarIconControllerImpl,其继承StatusBarIconController接口,用于跟踪所有图标的状态,并将对应的状态发送给注册的图标管理器(...

将SystemUI导入AS编译运行

将SystemUI导入AS编译运行 前期准备 以Android9.0源码(我这里用的是MT2712,win10环境,AS 4.1.3)为例 首先需要将源码进行一次编译,因为导出的SystemUI之后会引入一些编译后生成的库。 SystemUI代码路径为mt2712/frameworks/base/packages/SystemUI 将SystemUI代码拉到本地,删除代码中test和...

Android SystemUI-StatusBar启动过程简单分析

SystemUI-StatusBar启动过程简单分析 SystemUI的启动 SystemUI本质上是一个app,在系统中对应的源码路径为: frameworks/base/packages/SystemUI 在源码中编译后会生成 out/target/product/product_name/system/priv-app/SystemUI/SystemUI.apk。 在system/...

Android系统广播(Broadcast)注册,发送,接收流程解析

Android系统广播(Broadcast)机制 以下广播简称Broadcast Broadcast介绍    Broadcast(广播)机制是Android四大组件之一,在四大组件的另外两个组件Activity和Service拥有发送和接收广播的能力。Android广播机制是在Binder进程间通信机制的基础上实现的,内部基于消息发布和订阅的事件驱动模型,广播发送者负责发送消息,广播接收者...

Android应用程序启动入口ActivityThread.main流程分析

   之前Android应用程序进程的启动过程文章内有说过,当一个Android应用程序进程启动后,应用程序进程的入口就是ActivityThread类的main函数,ActivityThread的作用管理应用的主进程的执行,并根据AMS的要求,通过IApplicationThread接口负责调度和执行Activities和Broadcasts和其他操作,接下来这里会从main方法开始分析应...

Android应用程序进程的启动过程

   ActivityManagerService在启动一个应用程序组件时,如果发现该组件所需的应用程序进程还为创建,则会请求Zygote进程将该应用程序进程启动起来。根据Android开机流程分析那一部分的文章得知,Zygote是通过fork也就是复制自身的方式来创建一个新的应用程序进程,所以新的应用程序进程自然包含了Zygote内部的虚拟机实例的拷贝,Binder线程池以及一个消息循环;...

Android开机流程启动的系统服务以及功能介绍列表

这里按照启动System进程时系统服务在三种启动函数的位置分类分为三部分 即startBootstrapServices(),startCoreServices(),startOtherServices() startBootstrapServices():启动引导服务 startCoreServices():启动核心服务 startOtherServices():启动其他服务...

Android开机启动流程分析二(System进程)

   在Android开机启动流程分析一Zygote进程那一章中知道在ZygoteInit.main方法中,会调用ZygoteInit.startSystemServer进行System进程以及相关服务的启动,之后就会进入循环等待模式,等待ActivityMangagerService创建新应用进程的请求。接下来从ZygoteInit.startSystemServer开始通过源码分析Sys...

Android开机启动流程分析一(Zygote进程)

   该解析从system/core/init/init.cpp初始化一系列文件系统,解析system/core/rootdir/init.rc文件启动Zygote进程分析至Zygote进程启动完成。    当我们驱动层启动完毕时首先会启动init进程,也就是用户进程。在system/core/init/init.cpp中会对init.rc文件进行解析,之后会孵化出一些进程和一些重要服务,...