自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿氏悟语

Android 新特性研究

  • 博客(68)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android LOG系统原理剖析

在我们android的开发过程中,最不可少的就是加Log,打印Log的操作。这样可以帮助我们去查看各个变量,理清楚代码的逻辑。而Android系统,提供了不同维度,不同层面,不同模块的Log的支持。本文,将会分析Android Log系统的实现。

2021-03-15 14:24:33 2580 5

原创 Android 检查GPU渲染速度和图层渲染的调试技巧

引言在android手机上,经常会需要去处理一些performance问题。包含了GPU的渲染,图层的绘制,以及一些过度绘制的情况。本文,将会去介绍如何使用手机自带的一些功能,检查GPU绘制的情况。GPU 渲染速度分析启用分析器在现在的Android手机中,对着版本号敲击7下,将会打开隐藏的开发者选项。在启用开发者选项后,如需在使用应用时开始分析设备 GPU 渲染,请执行以下操作:转到 Settings 并点按 Developer Options。在 Monitoring 部分,选择 P

2021-03-11 15:37:45 1257 2

原创 Android 关机流程实现与分析

在Android的开发中,相比较于关机流程,用户和开发者往往更加关注于开机性能和时间。关机在普通用户的眼中,就是断电一下,并不需要太多的操作和流程。但是实际不然,我们在关机过程中,怎么样有序的保存数据,记录状态,安全关机。这个过程其实还是有很多的流程和环节需要注意。那么本文,将会详细的梳理一下Android手机的关机流程。

2020-12-14 15:53:49 649

原创 Android 内存管理之LowMemoryKiller实现原理分析

现在的Android手机,硬件的配置越来越强大,内存已经从当时的1G,2G向着6G,8G去进行了过度。但是,应用占用内存的情况,尤其是大型的游戏,多开的应用,对内存的占用情况也是在不停地上升。当内存在某个时间被占用的比较满的情况下,合理的杀死一些应用,并释放内存,是Android进行性能提升的一个手段。这个也就是一直说的LowMemoryKiller的机制。我们平时使用华为,小米等手机,也会发现在一定的情况下,后台的进程被很快的杀死,这个就涉及到了LMK的一些定制。本篇文章,我们会分析LMK的机制

2020-11-23 15:49:12 2814 1

原创 Android Dumpsys命令使用以及实现原理详解

引言在我们日常的开发Debug过程中,经常需要去加一些Log进行打印。APP层面的还好,但是Framework的层面,编译时长,版本匹配,OAT的Push,经常会带来较大的困扰。为了方便Debug,Android系统本身设计了dumpsys系统,来帮助开发者进行快速定位。可以使用这个命令,检查系统运行的services,运行时的一些变量,图层等内容。熟练的使用dumpsys命令,可以极大的减少我们的开发成本,节约开发时间。本文我们将会讲解dumpsys的使用,以及其详细的实现。使用帮助首先

2020-11-13 14:08:59 3771

原创 Android 救援模式(Rescue Mode)原理剖析

引言现在的一个Android设备出货,比如手机,平板和车机,都肯定是经过了很多次的测试。软件的品质起码是有一个基本的保障。但是有个实际情况是,当手机在市场上面发售以后,测试是没有办法模拟出来用户的所有操作的。市场上的消费者包括小白用户,当手机出现各种异常时,用户只能通过设备商售后处理。而现在售后一般对ROOT,和自己烧一些不是官方发布的软件版本是不保修的。Android考虑到了这一点,所以增加了救援模式的功能。可以在严重时,提供给用户恢复出厂设置的选项。这也就是本文分析的内容。救援级别

2020-11-12 17:40:30 6363 3

原创 Android power_supply驱动开发详解

引言目前,各个OEM其实为了降低成本,将会用各自的渠道去购买更加物美价廉的外设。这样,其实促进了各个厂商的竞争,而开发更加简单适配的驱动程序将会成为厂商必选项。那么,开发一个驱动,将会有哪些点需要关注,i2c读写,interrupt实现等内容将会是本文的关注点。这里以max8925为例,来进行一个分析。驱动注册在每个驱动想要被系统识别,肯定是需要进行一个声明。module_platform_driver(max8925_power_driver);MODULE_LICENSE("GPL")

2020-11-11 06:07:13 1179 1

原创 Android StorageManager实现原理剖析

引言在现在的Android手机中,EMMC已经从32G,64G开始了向128G, 512G的快速转变。随着5G时代的到来,以及近些年Camera的兴起,越来越多数据将会在本地进行运算和存储。那么,对于存储的管理就会越来越受人重视。...

2020-11-07 23:35:33 2464 3

原创 Android Zenmode/DND(勿扰模式) 实现原理剖析

引言Android手机越来越多的向着用户体验提升方面靠近,那么Zenmode就会变得越来越重要。近年来,也有很多的新功能依赖于ZenMode去实现,也有很多专利在这个方面申请成功。举两个简单的例子:在国内的话,我们是否可以根据日历行程和AI分析,在勿扰模式下进行行程的提醒…在国外的话,CMAS报警会很频繁,那么勿扰模式下的CellBroadCast就成为了不同运营商的需求。本文将会专注于ZenMode的实现,并分析这些内容。代码结构1. 设置相关的界面及代码路径:package

2020-10-25 19:34:51 3846

原创 Android RollBack机制实现原理剖析

功能介绍:在Android 10.0中,Google新增加了个功能。如果用户对新升级的APP不满意,可以通过“回到过去”,回滚到旧版。当然,如果新安装的apk出现了各种问题无法使用,也可以进行回滚的操作。这样的确可以极大的提升用户的体验,但是因为这块的逻辑较复杂,我们以module_crash_rollback_test为例,来看下具体的实现逻辑。代码路径如下:./base/services/core/java/com/android/server/rollback./base/core/.

2020-10-18 14:18:59 2964

原创 化战略为执行(五)战略执行之陷阱与对策

十个战略陷阱过度短期效益主义忽略外部趋势,特别是具有挑战性的趋势因当前的成功而过度自信没有回应市场中的结构变化没有尽力招募到最佳团队不够专注而偏离轨道不能在战略中培养信任不能将战略转化成能让员工接受的公司"目的"没有灌输速度意识没有制定结果问责制十个解决方案长期主义与市场保持同步谦逊的态度提早进入下一个商业模式精英领导体制集中专注点保持一致性明确目的保证速度确立问责制度...

2020-10-09 16:42:13 149

原创 化战略为执行(四)如何让战略与众不同

与众不同的战略评价战略好坏唯一且最大的分水岭就是管理层和员工是否与战略保持一致战略就是如何实现愿景战略和计划不同,战略是指我们如何竞争CEO的工作是让他的团队对工作充满信心。战略不只是过程的分析成果,执行人员要在情感上完全拥有它,否则他们就不会执行。·企业成长的最好办法:雇佣杰出的人才让他们相信你的公司与你分享同样的目标帮助他们学习和提高自己的能力。需要在考虑股东之前考虑"员工",否则,你对股东也无话可说。战略过程需要非常深入,公司内的每个人都需要了解正在发生的事情

2020-10-09 16:42:02 195

原创 化战略为执行(三)战略执行之关于人的谜题

战略执行永远不要认为你比员工更聪明战略成功的关键在于运用正确的人。执行战略需要同等的领导力,勇气及沟通能力。人员选择的三个要点:1. 组建成功团队 - 为团队找到正确的人选,有效地组织他们2. 领导力 - 选择及执行战略需要自上而下的清楚明了3. 沟通及参与 - 为了让战略有效,沟通时需要说服力企业文化对CEO来说可以是负担也可以是资产,从长期来看,文化石企业战略的成果而非前提条件。文化本身并不是目的,文化是公司员工行为的累积。如果你想改变文化,那么你就要改变

2020-10-07 20:16:42 276

原创 化战略为执行(二)为何高管必须打头阵

为何高管必须打头阵不要夸夸其谈,要行动起来! --Dr.RolfKunisch决定战略相对来说比较直观,但将它付诸行动却不一样。— 这恰恰是展现领导力的地方。引导高管团队进行战略探讨的七个方面:1. 设计:让正确的人参与2. 范围:构思问题3. 引导:提供假设4. 质量控制:谨慎,创新地处理正确的数据5. 魄力:保证团队足够大胆6. 提出“不可能或不明智”的问题7. 选择选择:战略行动计划需要公司内自上而下的联合,创造出高标准的责任感及企业家精神选择能够对CEO负责

2020-10-06 17:31:10 174

原创 化战略为执行(一)制定战略即是学问也是艺术

化战略为执行(一)制定战略即是学问也是艺术作者:Chris Outram引言只有可执行的战略才是有价值的战略. J.Sainsbury战略是为了给你的公司 找到一个具有差异化且可创造价值的方向。战略应该有的放矢,强化资源分配,并实现利益相关方的目标。CEO应该关注四件事:战略,员工,声誉,绩效。重要性是依次递减。本书讨论的主要内容:如何避免一个好的战略在开始实施时出错;如何从顺利执行过程工战略的前辈们身上学习经验;为新上任的公司领导总结了一些行动建议。

2020-10-06 14:08:32 250

原创 带团队,就是用好你身边的人

带团队,就是用好你身边的人作者:高岛宏平引言:阅读关于领导力的书,想要按照书本内容进行实践,这种做法固然可以理解。但是读的书越多,越发现书中所描述的领导者都如"圣人君子"一般,即使读者想要挑战,尝试采用同样的做法,也并不能长久,反而会对自己的领导力,甚至会对自身的性格失去信心。对于管理者来说,塑造自己独特的领导方式,会比盲目的学习更重要做为一个领导者,需要将领导力在技术层面与人性剥离开来。做为一个领导者,除了不断试错,塑造属于自己的领导形象之外,别无他法。领导者所使用的技能可以通

2020-09-28 17:09:03 874

转载 Build AOSP Kernel

This page details the process of building customkernelsfor Android devices. The following instructions guide you through the process of selecting the right sources, building the kernel, and embeddin...

2019-04-18 01:22:33 1496

原创 Android 耗电量统计原理剖析

在android系统中,耗电量排行一直是一个实用的功能当我们点击了电池用量后,就可以到达详细信息的界面。在这个界面中,我们可以看到对于电池使用时间的预测。可以看到具体app的使用耗电量排行。那么系统的是怎么实现的呢?注意右上角的“显示完整的设备用电量”当我们点击之后,就可以看到系统完整的耗电量排行。可以看到,Android操作系统,屏幕等系统的信息也都显示了出来。那么这个功能...

2018-11-12 13:58:30 1306

原创 Android 省电模式原理剖析

Android的平台上,耗电量的问题一直被人所诟病。从Lollipop开始,Google也一直非常重视对于省电模式的改造。本篇文章将会基于最新的Android Pie的代码,来系统分析现在Android的省电模式流程,并且对一些可以继续优化的点来给出一些建议。本篇文章将会从SystemUI开始讲起。QuickSettings这个图片相信使用android手机的同学都会有所印象,是...

2018-09-28 17:31:45 9667 5

原创 Android 启动速度优化工具介绍

在Android 8.0上面,google进行了启动速度的优化,但是对于开发者来说,追求更快的速度是必须的。这边就介绍一个android启动速度优化的工具,bootchart。bootchart在5.0的时候就以推出,但是现在的使用方式有了一些调整,下面就简单介绍一下.

2017-09-04 16:12:54 3316

原创 Android Ninja 编译原理剖析

引言使在Android N的系统上,初次使用了Ninja的编译系统。对于Ninja,最初的印象是用在了Chromium open source code的编译中,在chromium的编译环境中,使用ninja -C out/Default chrome命令,就可以利用源码编译出chrome的apk。对使用者而言,抛开对原理的探究,最直观的印象莫过于可以清楚的看到自己当前编译的进度。同时,

2016-11-07 06:52:04 29979 7

转载 共享内存映射之mmap()函数详解

共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才写回文件的。

2016-03-29 17:23:39 1156

原创 Android Native Crash 堆栈转换

Android 源码中提供了转换的工具,使用下述的命令可以实现Native Crash的so内存地址转换为实际代码的Crash情况。./third_party/android_platform/development/scripts/stack --symbols-dir="out/Release"copy(fatal,backtrace)Ctrl+Shift+D

2016-03-16 15:32:01 1875

原创 Android PackageManagerService实现剖析

在Android系统中,和用户关系最密切的service应该是PackageManager了。一般来说,用户想要在Android Phone上进行自己感兴趣的活动,都少不了apk的支持。不论是打电话,上网,发短信还是玩一些自己喜欢的游戏,这些内容在android的世界里都是以apk的形式存在的。所以,apk的安装,卸载是与每个用户息息相关的。我们接下来会用一些文章去解析PackageManager的工作原理,apk的安装和卸载的过程。

2016-02-25 16:43:24 2862

转载 android xml解析XmlPullParser的使用

xml相关参考 xml规范:http://www.w3.org/TR/REC-xml/ Xerces-J sax解析器的一篇教程:http://terpconnect.umd.edu/~zhangx/xml/html/xmlprog/xercessax/briefintro.html xml的组成: xml声明  version:xml的版本,一般都是1.0 enc

2015-04-23 17:34:33 4658

原创 android SELINUX规则分析和语法简介

SELINUX是可以理解为一种android上面的安全机制,是有美国国家安全局和一些公司设计的一个针对linux的安全加强系统我们可以通过配置SELINUX的相关policy,来定制自己的手机的一些权限,比如,我们可以完全让root用户没有任何的权限和user一样在android里面,有两个类型,一种是文件,一种是进程。针对这两种类型,我们可以先来看看他们的不同。在android上面,adb shell之后进入手机,ps -Z可以查看当前进程所拥有的selinux的权限。

2015-04-15 19:24:01 9349 1

原创 Android启动流程分析(十二) SystemServer

SystemServer也是系统的一个重要的守护进程,从SystemServer的进程中,我们看到了系统的各种关键的Service的启动。另外,根据前面的zygote的分析,我们知道了systemServer在android的启动过程中是肯定要启动的。因为在init.rc里面,已经指定了要start-system-server = true.那么在zygote中,我们看到了如下的code

2015-04-13 12:08:30 1415

原创 Android启动流程分析(十一) zygote的启动

首先zygote创建了appruntime的对象,并调用他的start。此后的活动由AppRuntime来控制然后调用startVM来创建了虚拟机,调用startReg来注册JNI的函数通过JNI调用zygoteInit进入了java的世界调用registerZygoteSocket来响应子孙后代的请求,同时调用preload函数进行资源的预加载调用startSystemServer来进行系统启动的后续工作完成了java世界的初创工作后,变进入了select循环,来处理后续的请求。

2015-03-31 17:16:01 1409

原创 Android启动流程分析(十) action的执行和service的启动

在前面的文章分析完init.rc的解析以后,我们知道现在action按照init.c的main函数中的秩序,维护了一条qlist的链表,listnode为action_qlistservice也维护了一条链表,listnode为service_list。那么,在android的启动过程中,action和service是如何被启动的呢?我们接下来再回到我们一直分析的init.c的main函数中来看一下。

2015-03-30 18:15:36 5654

原创 Android启动流程分析(九) 解析init.rc的service

在分析完解析init.rc的action之后,剩下的一部分就是解析service了。而解析service还是需要回到parse_config里面来。根据前面的知识,我们也可以很容易的知道在关键字为section的时候,会进入到parse_new_section。这里会先执行parse_service,然后将service以及后面跟的option设置为执行parse_line:parse_line_service。要理解service的解析流程的话,首先要关注的就是service的结构体。

2015-03-30 14:39:45 3059 1

原创 Android启动流程分析(八) 解析init.rc的action

上一章讲述了android启动过程中,加载init.rc之后需要对其进行解析。而解析又根据三个不同的SECTION来执行不同的初始化的文件,分别是parse_action,parse_service,parse_import.那么,这一节,我们就从parse_action来讲一下是如何解析init.rc下面,on的关键字及其对应的action与command的。按照惯例,先来看一下这个函数实现:

2015-03-29 15:50:22 1954

原创 Android启动流程分析(七) init.rc的解析

Init.rc的解析过程是笔者认为在android启动过程中,最复杂,最难理解的部分。虽然它的内容很少,但是却包含了非常多的处理,接下来我们来慢慢的分析。经过前面的分析,我们知道了read完init.rc的文件后,保存到了data的数组,传递到了parse_config的函数里。

2015-03-29 13:50:31 1560

原创 Android启动流程分析(六) init.rc的语法

在init.rc的解析之前,我们要先了解init.rc里面到底写了什么,它的语法是怎么样的。其实,非常建议去读一下android关于init.rc的说明文件:system/core/init/readme.txt这个里面,已经讲的非常的清楚。但是这里,还是简单的总结一下。init.rc首先是位于system/core/rootdir/init.rc.

2015-03-29 12:38:22 3160

原创 Android启动流程分析(五) init.rc的读取

在前面一篇中,分析了在init的main函数中,会去解析init.rc。那么解析的过程是怎么样的呢?init.rc的解析函数为:init_parse_config_file.实现的位置在于:init_parse.c

2015-03-29 12:13:50 1584

原创 Android启动流程分析(四) init进程分析

前面讲到了,我们init进程执行的话,首先执行的会是init的main函数。那我们就先来看看init的main函数做了什么事情。首先,我们看到init最先做的事情是创建一些文件夹,并且挂载设备,这些函数都是linux的常见函数:

2015-03-29 11:38:58 1640

原创 Android启动流程分析(三) init进程初窥

init进程是android启动过程中的第一个进程,如果我们用adb shell进入到android 手机后,使用ps命令去看android的系统进程的话,会得到如下的结果:

2015-03-29 10:28:07 1546 1

原创 Android启动流程分析(二) init进程的启动

分析init进程,首先要分析init进程是如何启动的, init的源码位于(system/core/init),我们先来看看init进程的android.mk

2015-03-29 10:06:17 1838 1

原创 Android启动流程分析(一)概述

Android的启动流程绝大部分人都知道,但是大多数人都是这样描述的:Android启动,首先是启动Bootloader,然后挂载kernel,挂载完kernel之后,会启动android的init进程,init进程会去孵化Zygote,Zygote是android的重要支柱之一,然后由zygote启动的systemserver,systemserver启动了系统的各种关键的service,然后service启动后,就进入了Launcher的apk,启动完毕。。这么说的确可以简单的概括android的

2015-03-29 09:26:28 1670 1

转载 Jni語法大全

一、对照表Java类型    本地类型         描述boolean    jboolean       C/C++8位整型byte       jbyte          C/C++带符号的8位整型char       jchar          C/C++无符号的16位整型short      jshort         C/C++带符号的16位整型in

2015-03-23 15:55:01 873

原创 Android DownloadProvider 源码分析

Download的源码编译分为两个部分,一个是DownloadProvider.apk, 一个是DownloadProviderUi.apk.

2014-03-28 11:52:32 6109 2

疯狂java讲义第三版

李刚,疯狂java第三版,光盘和pdf都包含,网盘地址见下载附件

2015-06-24

KitKat研究报告

基于最新的android4.4代码,详细分析Browser app,framework webkit/webview, extern/chromium_org的改变.

2013-11-16

UPNP协议的分析和实现

自己总结的一篇关于upnp协议,以及如何在android上使用upnp库的详细文档。

2013-05-08

android启动流程分析

一篇详细描述android启动流程的文档,详细分析了android启动时所需要启动的函数,以及函数启动的顺序和调用关系。

2013-05-08

android activity详细总结

一篇关于android activity的详细总结

2013-05-06

android service总结文档

一篇对于android service的详细总结

2013-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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