Gityuan

Keep on going never give up

[置顶]Android 操作系统架构开篇

基于Android 6.0或更高版本的源码,专注于分享Android系统原理、架构分析的原创文章,这是Android系列文章的开篇。

[置顶]Flutter 跨平台演进及架构开篇

基于Flutter 1.5.4或更高版本的源码,专注于分享Flutter引擎、框架、虚拟机等架构与原理解读的原创文章。

Git常用命令

一、概述 先用一幅图,从总体上描述主要git命令的工作流程 workspace: 本地的工作目录。(记作A) index:缓存区域,临时保存本地改动。(记作B) local repository: 本地仓库,只想最后一次提交HEAD。(记作C) remote repository:远程仓库。(记作D) 二、命令笔记 以下所有的命令的功能说明,都采用上述的标记的...

浅谈HTTP RESTful

RESTful 是一种非常流行的软件架构,或者说设计风格而非新的技术标准。提供了一组设计原则和约束条件,主要用于客户端与服务器的交互。RESTful架构更简洁,更有层次,更易于实现缓存等机制。 理解RESTful RESTful, 全称Representational State Transfer。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和...

浅谈HTTP协议

HTTP是一个属于应用层的面向对象的协议,工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端发送请求。本文只介绍目前应用比较广泛的HTTP/1.1协议,下面从请求与响应两部分分开展开讲解。 一. 请求(Request) 1.消息格式 一个完整的 HTTP/1.1消息格式分三部分: 请求行: {请求方法} {资源路径}...

SELinux 权限问题

本文主要记录一下修改selinux权限的方法 权限修改 方法1: adb在线修改seLinux Enforcing(表示已打开),Permissive(表示已关闭) getenforce; //获取当前seLinux状态 setenforce 1; //打开seLinux setenforce 0; //关闭seLinux 方法2: 从ke...

Atom编辑器

一、概述 今天给大家推荐一款文本编辑器,支持markdown语法,这是最初选择的出发点。Atom是Github专为hacker推出的开源的文本编辑器,支持linux、window等多平台,界面简洁优雅,当第一眼看到atom界面的时候就深深地被吸引: Atom提供非常方便进行主题二次开发,插件扩展化等非常适合定制,并且可以直接方便得修改所有相关的config配置,可以打造自己独有的编辑...

搭建Jekyll本地写作环境

前言:Jekyll是一个开源的博客生成工具,类似WordPress。但与之不同的是,jekyll只生成静态网页,并不需要数据库支持。 通常配合第三方评论系统使用,例如Disqus, 最关键的是jekyll可以免费部署在Github上,而且可以绑定自己的域名。 一、安装Ruby Jekyll是用ruby语言编写的,所以我们首先要在装好ruby环境,下面分别讲一下Ma和Window...

Markdown笔记

基本语法 语法方面的文章有很多,这里就不详细说明 http://www.appinn.com/markdown/ https://help.github.com/articles/markdown-basics https://help.github.com/articles/github-flavored-markdown http://wowubuntu.com/ma...

Activity与Service生命周期

一. Activity 先展示一张Activity的生命周期图: 1.1 Activity状态 只有下面三个状态是静态的,可以存在较长的时间内保持状态不变。(其它状态只是过渡状态,系统快速执行并切换到下一个状态)    运行(Resumed): 当前activity在最上方,用户可以与它进行交互。(通常也被理解为”running” 状态) ...

5.5 探究Binder Driver

5.5 探究Binder Driver 5.5.1 Binder驱动初始化 Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理。对于Binder初始化的三部曲,依次是(binder_open),映射(binder_mmap),数据操作(binder_ioctl)。...

5.4 查询服务

5.4 查询服务 5.4.1 用C++查询服务 查询服务是向ServiceManager进程来查询后得到对应服务的代理对象, 不论是Java层注册的服务,还是Native注册的服务,都是可以在Native层用C++来查询的。 1. BpServiceManager 这里再次以media为例,从上一小节的内容,可知MediaPlayerService服务名为”media.player”...

5.3 注册服务

5.3 注册服务 5.3.2 注册C++层服务 这里不妨以MediaPlayerService服务过程为例,来说一说服务注册过程,先来看看media的整个的类关系图。 图解: 蓝色代表的是注册MediaPlayerService服务所涉及的类 绿色代表的是Binder架构中与Binder驱动通信过程中的最为核心的两个类; 紫色代表的是注册服务和获取服务的公共接口/父...

5.2 ServiceManager管家

5.2 ServiceManager管家 5.2.1 启动ServiceManager服务 Android系统对外提供了非常丰富的服务功能, 例如Java层的ActivityManagerService, WindowManagerService服务, Native层的SurfaceFlinger, AudioFlinger服务等,这么多服务有有一个统一的地方来管理这些服务ServiceM...

5.1 Binder概述

5.1 Binder概述 Android系统中,每个应用程序是由Android的Activity,Service,Broadcast,ContentProvider这四剑客的中一个或多个组合而成,这四剑客所涉及的多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,整个Andro...