功能机用上下键实现MoveEvent

这个功能的用处功能手机(这里说的功能机只是没有触屏,单还是Android系统)能在浏览器中使用上下键实现移动光标的目的,这里我们大致分析流程。 我们知道普通按键,会在KeyboardInputMapper的process执行,比如这里我们要关注的上下左右按键。 void KeyboardIn...

2019-01-22 15:11:34

阅读数 259

评论数 0

Zygote进程

Zygote简介 zygote是Android一个非常重要的进程,和init、systemServer进程这三个进程是Android系统非常重要的进程。 Linux的进程是通过fork产生,fork出来的进程除了一些核心数据结构和父进程不一样,其余的内存映像都是和父进程共享的。通常子进程for...

2019-01-22 15:11:26

阅读数 114

评论数 0

android log各个文件整理

这篇博客我们罗列下各个log日志的头文件的使用。 java层: 1.android.util.Log; 2.android.util.Slog; 3.android.util.Rlog 最后通过了native调用了__android_log_buf_write函数,这个函数是通过了log...

2019-01-22 15:11:19

阅读数 183

评论数 0

Android8.0 user版本adb 的log输出到串口中

我们在调试adb时不能使用logcat,这个时候我们需要把adb的log输出到串口,init就能实现,我们仿造init的代码,在adbd的main函数中调用了如下函数InitKernelLogging(nullptr);这个函数在init进程中也有调用。这个函数的意思把标准输入输出,标准错误全部写...

2019-01-22 15:11:14

阅读数 28

评论数 0

logging.h提供的功能

这篇博客我们来分析logging.h提供的功能,引用这个文件可以#include <android-base/logging.h>,而这个文件在logging.cpp中实现。 首先我们来看下其注释:提供了一个c++ stream的接口,而且PLOG会打...

2019-01-22 15:11:08

阅读数 226

评论数 0

android Init进程新特性(截止android 8)

这一节主要补充,在现在android 8上和之前比的新特性(仅仅是自己新发现,不清楚哪个版本加入或者是以前自己没发现)。 1. init.rc中加入了对vendor下面手机厂商自己的rc文件,这样不用重新编译bootimage,只要push自己rc文件到vendor/etc/init/hw。而且...

2019-01-22 15:11:03

阅读数 299

评论数 0

Android9.0 应用待机群组

一、概述  Android 9 引入了一项新的电池管理功能,即应用待机群组。应用待机群组可以基于应用最近使用时间和使用频率,帮助系统排定应用请求资源的优先级。 根据使用模式,每个应用都会归类到五个优先级群组之一中。 系统将根据应用所属的群组限制每个应用可以访问的设备资源。 五个群组按照以下特性...

2019-01-22 15:10:58

阅读数 1284

评论数 0

Android 8.0 App Standby

一、概述 低电耗模式和应用待机模式是从Android M引入的新特性,之前一直没有分析,低电耗模式就是Doze,应用待机模式就是 App Standby。 Doze模式我们之前分析过了,Doze模式在Android N又有修改,Android 6.0(API 级别 23)引入了低电耗模式,当用...

2019-01-22 15:10:52

阅读数 295

评论数 0

温控daemon(七)ss算法

monitor算法是一种静态算法,超过阈值就限制为多少频率,或者做什么处理,ss不一样它是一种动态算法。 下面我们就从代码层面进行分析。也是在main函数中调用了ss_algo_init函数。 1. ss_algo_init 我们来看下这个函数的前半段函数,这里主要先是过滤配置中的setti...

2019-01-22 15:10:42

阅读数 440

评论数 1

温控daemon(六)Monitor算法

Monitor算法温控的常见算法之一,在main函数中调用了thermal_monitor函数.Monitor算法是一种静态算法,当超过每一个设置的温度值就会调频,当小于clr的温度就会停止调频算法。 1. thermal_monitor函数 thermal_monitor函数先是从dev_l...

2019-01-22 15:10:37

阅读数 327

评论数 0

温控daemon(五)socket监控

这篇博客我们主要分析thermal-engine的socket监控,包括应用client的注册回调,以及client发送thermal消息都是通过socket。在thermal-engine启动分析的时候我们看到其创建了4个socket。 1. socket初始化 我们从main函数的ther...

2019-01-22 15:10:32

阅读数 281

评论数 0

温控daemon(四)加载配置文件

这篇博客我们主要分析thermal-engine中如何加载配置文件,包括代码中和配置文件。这里主要分析下thermal和ss算法的配置。 加载配置,在main函数中主要涉及如下代码。 init_settings(&thermal_settings); pid_i...

2019-01-22 15:10:26

阅读数 327

评论数 0

温控daemon(二)启动参数解析、device初始化

这样我们主要开始将thermal-engine的流程。 1. thermal-engine启动 先从启动开始说起,在init.target.rc中定义了thermal-engine为一个service,并且属于main class,随main服务一起启动。 service thermal-...

2019-01-22 15:10:09

阅读数 745

评论数 0

温控daemon(三)sensor初始化

既上一篇博客继续分析main函数,上一篇博客我们分析了devices_init device的初始化,这篇博客先是分析保持KTM工作,后面主要分析sensor的初始化,。 1. 保持KTM工作 我们先来看如下,先是创建了一个kernel的client,然后因为有kernel 的device,所...

2019-01-22 15:10:03

阅读数 403

评论数 0

温控daemon(一)概述

thermal-engine是一套通过检测android设备上的各个sensor是否温度过高,来限制cpu频率、cpu热插拔、gpu频率、carmera帧率,modem、LCD等各个模块的性能。 温控模块分为用户层的thermal-engine和kernel层的KTM,当thermal-engi...

2019-01-22 15:09:58

阅读数 523

评论数 0

按键是如何知道分发给哪个应用进程

之前分析按键的博客,我们分析了按键的流程,但是对按键具体在InputFlinger中分发给哪个进程这块没有分析。 WMS设置焦点 我们先来看WMS的updateFocusedWindowLocked函数,当Window窗口或者焦点有变化都会调用这个函数,这个函数先调用findFocusedWi...

2019-01-22 15:09:52

阅读数 781

评论数 0

Android7.0 init.rc流程分析

在http://blog.csdn.net/kc58236582/article/details/52247547这篇博客中,我们分析了init进程的流程,现在我们结合代码主要分析init.rc脚本的流程。   首先我们会加载原生的init.rc,然后我们自己的一些内容放在自己的init.rc...

2019-01-22 15:09:47

阅读数 1289

评论数 0

android log丢失(三)动态切换logd机制和kernel机制

之前我们分析了如何修改版本使log机制变成kernel的log机制。这篇博客我们继续修改可以动态切换,这样方便平时log丢失时调试。   我们先来看liblog库的编译mk文件,这个文件中主要修改了对使用使用logd 使用不同文件进行编译这块做了修改,增加了log_write_common.c...

2019-01-22 15:09:42

阅读数 1722

评论数 1

Android7.0 Doze模式分析(三)alarm

上篇博客分析了Doze模式下WakeLock,这篇我们分析Alarm。 白名单 首先我们从白名单开始,在DeviceIdleController中会设置alarm的白名单。   public final class LocalService { public vo...

2019-01-22 15:09:37

阅读数 2424

评论数 1

Android7.0 Doze模式分析(二)wakelock

前面我们介绍Doze模式的时候介绍过WakeLock白名单,WakeLock进入Doze接口等。这篇博客我们详细分析下,WakeLock在Doze模式下如何生效。   设置白名单 在DeviceIdleController中我们调用PowerManagerService的如下接口,来设置Wa...

2019-01-22 15:09:32

阅读数 2554

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭