android系统学习轨迹
星空梦想plus
上九天揽月,下五洋捉鳖
展开
-
Android 更新系统api接口时注意事项
修改了framework/base下的api之后首先需要执行下面命令:make update-api 以达到更新下面文件的目的:frameworks/base/api/current.txt如果我们更新了系统源码API,如果只提交代码修改部分,后面的同学编译就会报错,所以需要注意的是同步将修改部分代码以及更新之后的frameworks/base/api/current.txt文件一并提交,以免影响协同开发工作,虽然只是一个小点,但也不容忽视!...原创 2020-11-28 20:37:38 · 951 阅读 · 0 评论 -
android android.R.string.和com.android.internal.R.string.的区别
某个时间刚好有这个疑问,一开始我以为只有后者源码是在framework/base/core/res/res下的strings.xml,前面那个我还以为资源是在其他的系统源码目录中。解答疑问前需要知道Android 系统资源相关的几个路径:在 AOSP 的路径是:./frameworks/base/core/res/在手机flash的位置是:/system/framework/framework-res.apk在AS的 SDK 中的路径是:./android-sdk/platforms/原创 2020-11-26 23:08:22 · 1359 阅读 · 0 评论 -
回顾系统优化
这是很早时候的记录,现在看来还是有点用,现在看来确实还很不完善,但基本够用了,方向有了,但对我们来更重要的是实现方法!原创 2020-11-08 15:00:19 · 113 阅读 · 0 评论 -
Android使用Linux shell方法
这个也是系统开发常用到的,系统兼容性较好,我这边以函数形式表现:public void executeShellcmd(String cmd){ Runtime runtime = Runtime.getRuntime(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(cmd); runtime.exec(stringBuilder.toString());}通常我们还可以通原创 2020-10-13 21:47:00 · 401 阅读 · 0 评论 -
分析系统业务逻辑手段
通常找函数跳转逻辑可以通过以下方式快速定位,在事件触发函数处加上下面代码即可:if(true){throw new NumberFormatException();}这个方法比较方便且实用,在这里以记录。原创 2020-10-13 21:39:15 · 338 阅读 · 0 评论 -
Android 9.0的一些变化
文章目录1.前言2.编译3.init进程4.系统服务5.其他1.前言这边是基于4.4到9.0上的变化对比,由于时间原因,先立个标题,晚上我再写完整,主要包含以下几点。2.编译3.init进程4.系统服务5.其他原创 2020-09-30 23:55:04 · 2104 阅读 · 0 评论 -
android系统通用框架
按照自己理解,通用的系统框架如下图:ps:1.上面的除了hardware部分,其他每个部分对应着系统目录。2.可以说android就是架在Linux内核上的一个超级应用。3.其中kernel到hardware通常中间还包含一层chip层,芯片适配层,作用是兼容kernel和hardware,也是兼容x86和arm处理器的指令集。...原创 2020-04-27 22:19:27 · 399 阅读 · 0 评论 -
android系统启动简述
下面我将用最简单的话来描述这个过程:1.bootloader主要是在系统加载前,初始化硬件设备,建立内存空间的映像图,为最终调用系统内核准备好环境,常见的引导程序就是uboot,uboot的第一条指令从cpu/arm920t/start.S文件开始,它最终跳转到内核。(若用户在启动刚開始按了指定的recovery组合键,系统会直接进入Recovery模式, 若启动过程中用户没有按下不论什么组合键...原创 2020-04-13 22:21:26 · 137 阅读 · 0 评论 -
系统测试用例归总
本人非专业测试,这里的测试用例仅仅是个人经验之谈,包含以下内容1.应用相关应用启动速度测试应用功能测试应用操作响应速度测试应用内存测试应用安全测试2.系统相关系统极度繁忙测试系统启动速度测试连接测试(wifi,蓝牙,移动数据等)系统按键测试待机测试(时长)挂起和唤醒测试系统时间测试安全测试网络测试(信号强度,传输测试)...原创 2020-04-04 11:36:02 · 423 阅读 · 0 评论 -
系统精简归总
文章目录1. 前言2. apk的裁剪3. 服务的裁剪4. 运行库的裁剪5. 硬件抽象层的裁剪1. 前言先来看一下android的系统架构:图上虚线所划定的范畴内对Android系统进行裁剪,具体可分为以下几个方面:应用程序层:在这一层的工作是针对系统原生的应用程序进行裁剪,通过对不必要的应用程序进行裁剪,可以加速包扫描的过程,从而使得系统启动速度加快:并且因为减少了驻留在内存中的应用...原创 2020-04-04 11:13:18 · 250 阅读 · 0 评论 -
系统目录归总
文章目录1.build2.bootable3.framework4.system5.device6.package7.dalvik&art8.out1.build2.bootable3.framework4.system5.device6.package7.dalvik&art8.out原创 2020-03-08 01:44:28 · 2470 阅读 · 0 评论 -
系统优化归总
文章目录1. 前言2. 启动加速3. 稳定性4. 省电5. 安全加固1. 前言这篇文章是我对android生态之系统篇性能优化这一小节的补充,出发点是从系统优化角度出发的,但是对android应用性能优化也有一定的参考意义。这里所指的性能优化是抛弃硬件本身影响,从软件层面进行相关的性能优化。整个过程如下图所示:2. 启动加速如果想要android系统开机过程尽快的完成,并展现用户操...原创 2020-03-24 01:17:50 · 168 阅读 · 0 评论 -
系统属性笔记
以ro开头的属性都是只读属性,所以不可被改变以persist开头的属性,从名字看可以知道这类属性是可持续性的,即修改之后即使重启之后,也不会变成初始值其他类型的属性,可以被读写,但是在重启之后会被重新赋初始值Makefile文件中通过PRODUCT_DEFAULT_PROPERTY_OVERRIDES字段添加的属性会加入default.prop,位于系统根目录下Makefile文件中通过...原创 2020-03-09 20:32:36 · 1206 阅读 · 0 评论 -
抓取网络包与分析网络报文的相关记录
文章目录1. 前言2. 命令解析3. Wireshark使用3.1 工具简介3.2 界面理解3.3 过滤规则1. 前言写这篇文章主要目的是为了结合日志辅助分析网络状况,算是比较基础,这也方便初学者学习理解。先来看一下它的简介:tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系...原创 2019-12-15 13:30:58 · 530 阅读 · 0 评论 -
浅谈framework之PowerManagerService
文章目录1. 前言1. 前言原创 2020-03-08 01:42:17 · 431 阅读 · 0 评论 -
浅谈framework之InputManagerService
文章目录1. 前言2. 服务的启动3.dispatch1. 前言InputManagerService为书写方便,下文皆简称为IMS。IMS在前面的文章有一笔带过,这篇文章重点来学习一下这个系统服务,也是对自己学习过程的一个记录。(主要还是因为想了解特殊键值的处理过程,哈哈哈哈~)2. 服务的启动说到IMS,这里还是从服务的启动开始讲起,依然是老生常谈的模式,它是由SystemServe...原创 2020-03-08 01:42:44 · 953 阅读 · 1 评论 -
浅谈framework之WindowsManagerService
文章目录1. 前言2. 简述WMS1. 前言接下来的一段时间,主要着重点会放在WMS的学习研究上,不断完善这篇文章,然后再将AMS那篇文章完善,就先告一段落了。2. 简述WMS...原创 2020-03-08 01:43:28 · 1383 阅读 · 0 评论 -
浅谈android源码之build
文章目录引言准备环境下载源码编译源码编译原理引言这篇文章主要是整理之前的学习系统编译时候的经验,欢迎大家技术交流。如需转载,请标明出处!本菜鸟的github准备环境apt install curlapt install repoapt updatesudo apt-get install openjdk-8-jdksudo apt-get install libx11-dev:i...原创 2019-03-31 14:52:35 · 1621 阅读 · 0 评论 -
media服务启动C/S分析
总结原创 2019-07-18 15:50:24 · 566 阅读 · 0 评论 -
浅谈android源码之recovery
浅谈系统定制之recovery篇前言recovery的工作实现getargs()实现前言目前为止,接触到的系统开发有这几个模块的定制与修改,分别是bootable下的recovery,system下的init,dvm与art虚拟机,还有以及包罗万象的framework模块,接下来会一一做一个简单的总结,以供大家学习参考。recovery的工作实现recovery是一个进程,当系统进入恢复模...原创 2019-07-29 11:43:22 · 842 阅读 · 0 评论 -
浅谈framework之PackageManagerService
文章目录前言PKMS启动过程installd底层服务启动过程解析apk过程优化过程连接底层服务过程installd实现安装过程设计模型总结前言PackageManagerService在android系统中, 主要工作负责系统应用的安装与卸载工作,由于系统中还有一个名字叫PowerManagerService的系统服务,所以下面我将他的缩写命为PKMS,防止混淆。顺便提一下,这篇文章理论基础...原创 2020-03-08 01:43:46 · 737 阅读 · 2 评论 -
SystemUI 启动
2.1 SystemUI 启动SystemUI是一个app,它所在的系统源码路径为:androidSource/frameworks/base/packages/SystemUI它的目录结构如下:我们可以根据Android.mk配置信息可以看出这个模块最终编译成SystemUI.apk,生成的产物是在out/target/product/(productname)/system/priv...原创 2019-08-08 11:37:13 · 512 阅读 · 0 评论 -
Launcher 启动
2.2 Launcher 启动接上边,我们直接跳到SystemServer类AMS相关代码,它会执行下面这行代码: ActivityManagerService.self().systemReady(new Runnable() {});然后再看systemReady函数的实现代码: public void systemReady(final Runnable goingCallb...原创 2019-08-08 16:30:28 · 421 阅读 · 0 评论 -
浅谈framework之ActivityManagerService
文章目录前言进程管理内存管理组件管理总结前言OS世界的三大天尊之一,ActivityManagerService,下文将称其AMS,他的作用包括进程管理,内存管理,组件管理等,作用毋庸置疑,学习AMS,跟踪过程,弄懂原理,对系统开发定制有极大的帮助,对应用开发也可以借鉴他的架构设计自己的独有模式,并且可以全局分析上层可能出现的问题。有时间就填坑吧,哈哈哈。进程管理内存管理组件管理总结...原创 2020-03-08 01:40:43 · 405 阅读 · 0 评论 -
任务栈
3.1 什么是任务栈任务栈是一种以栈的形式放置Activity实例的容器,遵循先进后出原则,包含压栈和出栈两个基本操作。一般情况下启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下回退键时,这个Activ...原创 2019-08-12 14:19:19 · 1300 阅读 · 0 评论 -
关于系统裁剪经验记录
文章目录1.前言2.裁剪目的3.裁剪方式4.注意事项5.其他1.前言最近看系统优化相关的内容想到了系统裁剪这块,做个简单的记录,为后面快速上手提供帮助。2.裁剪目的做系统裁剪主要存在连个目的:1.缩短编译ROM时间,提高出包效率;2.精简ROM包,方便用户下载;3.加速系统启动,提高用户体验。3.裁剪方式1.裁剪原生系统无用的应用安装包,仅仅此项就可以大大减少最终生成的ROM包的...原创 2019-09-02 17:12:34 · 859 阅读 · 0 评论 -
浅谈android源码之dalvik
文章目录1. 初识DVM2. 虚拟机的启动过程2.1 前言2.2 init启动Zygote2.3 Zygote启动DVM2.3.1 startVm2.3.2 startReg3. 虚拟机与内存管理3.1 前言3.2 启动GC的时机3.3 标记阶段3.4 清除阶段4. 虚拟机与进程管理4.2 客户端请求4.3 处理客户端请求5. 虚拟机解析dex过程5.1 前言5.2 调用OptMain.cpp过...原创 2020-03-08 01:44:07 · 1103 阅读 · 1 评论 -
浅谈android源码之system
文章目录1. 前言2. init.c3. init.rc3.1 脚本语法3.2 解析脚本1. 前言这篇文章主要讲的是system目录下的init进程启动过程相关的内容,仅作参考。码字不易,转载请注明出处!2. init.c当linux内核启动之后,运行的第一个用户进程是init,进程号为1。这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终,linux中所有其它的进程的...原创 2019-09-12 11:44:57 · 1322 阅读 · 0 评论 -
浅谈android源码之device
文章目录1. 前言2. 目录结构3. 其他1. 前言device目录为平台产品定制目录,这边将以hisi平台为例,讲一下结构设计思路,但这里并不会涉及到源码设计,仅供参考。2. 目录结构定制的目录如下:下面说一下重要的文件或者目录:1.vendorsetup.sh主要作用是为lunch菜单添加新的产品项,这里是出于平台定制化考虑。里面内容如下:add_lunch_combo O...原创 2019-09-22 10:55:41 · 2251 阅读 · 0 评论 -
浅谈android源码之out
文章目录1. 前言2. 目录结构1. 前言Android源码中的out目录一开始是不存在的,是在我们执行编译操作之后才由系统自动生成,了解out目录对系统开发是必经之路。2. 目录结构属性目录媒体...原创 2019-09-23 11:28:08 · 1305 阅读 · 1 评论 -
Android源码创建新模块加入源码自动编译
Android源码添加新的模块前言我们在源码中添加新的模块的时候,并不是说你简单编写好模块的Android.mk之后就完事儿了,你在全编译的时候,输入make命令之后,等编译之后你会发现你新加的模块并没有加入到源码的自动编译之中,这是为什么呢?后面详细说明。2.原因这是因为你没有告诉系统你的模块需要参加编译,就像你不告诉别人我喜欢你,她永远也不会知道一样,一定要主动告诉她。好的,那通过...原创 2019-06-28 10:51:57 · 1907 阅读 · 1 评论