自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android驱动开发之如何编译和更换内核

google把模拟器的内核代码还是放在goldfish之中,这很容易让人误解,因为goldfish已经是第一代模拟器的硬件代号了。并且在goldfish中的代码分支很少,给人一种不再维护的感觉。希望大家能愉快的编译和使用自己的内核!

2024-04-22 11:49:36 545

原创 Ubuntu上阅读Android源码工具

由于Android源码过于庞杂,里面有多种语言源文件,想只用一IDE统一索引是不现实的。我个人便使用AS阅读JAVA代码,VS看C/C++代码,在Ubuntu上不能使用SI,所以直接放弃。在framework开发这个层面上来讲,因为大部分是java语言,而安卓源码提供的工具可以做到对全部java文件索引,所以AS还是可以做到流畅的跳转的。生成android.iml(工程配置文件)和android.ipr(索引文件).

2024-04-19 19:32:41 346 1

原创 linux内核初始化成功后是如何过渡到android初始化的

Android用的linux内核,以完成OS该有的功能,例如,文件系统,网络,内存管理,进程调度,驱动等 ,向下管理硬件资源向上提供系统调用。另一些Android特有驱动也放在内核之中。当linux内核启动完成后,便进行Android的初始化工作。

2024-04-18 14:03:08 662

原创 ANDROID模拟器SU命令的位置

编译android源码时,发行版是不会编译su相关代码,其代码位于。在编译调试版本后,可执行文件su放在。

2024-04-17 17:14:49 249 2

原创 Android自带模拟器如何获得ROOT权限

如果在模拟器中不能切换到root权限,很可能是镜像使用的不对。在虚拟机管理器中新建AVD,并下载符合要求的镜像文件。1.运行在PC端选X86_64镜像,才能流畅运行。2.不带google api的镜像。

2024-04-17 12:16:10 294

原创 Retrofit中的ResponseConverter的处理顺序

Retrofit选择ResponseConverter的流程如下:#mermaid-svg-A0BABLoNrnvTlAVA .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-A0BABLoNrnvTlAVA .label text{fill:#333}#mermaid-svg-A0BABLoNrnvTlAVA

2020-08-29 22:55:43 717

原创 Retrofit中的Converter

Converter用于转换数据,例如,请求服务器时,经常会把对象转换成json格式,或者xml,收到服务器返回的文本时,又会需要转换成对象,或者String等。如果想了解更多,请看:一般在初始化的时候,会添加GsonConverterFactory,以Gson为例: Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://" + server.getHostName() + ":" + ser

2020-08-29 21:37:15 231

原创 Retrofit中的动态代理

Retrofit使用动态代理来生成api的类和实例,开发过程中却无感知,下面是一个最朴素的使用方式:初始化retrofit Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://" + server.getHostName() + ":" + server.getPort()) .addConverterFactory(GsonConverterFactor

2020-08-29 12:34:49 723

原创 Retrofit发起请求的流程

retrofit

2020-08-29 11:47:30 350

原创 JsonElement的生成

JsonElement先来看下JsonElement继承关系:JsonElement (com.google.gson) JsonObject (com.google.gson) JsonArray (com.google.gson) JsonNull (com.google.gson) JsonPrimitive (com.google.gson)jso...

2020-05-04 14:17:06 2878

原创 Gson源码分析开篇

如何解析jsonjson本质上讲是一个结构型的文本。可以对其也解析的复杂程度远不如编译器。编译器的一个基础功能便是词法分析。而Gson的核心功能之一,也是词法分析。词法分析的任务是要解析出Token流,Token是一个二元组。类似于这样,Token<符号,种别码>。Gson中与token有关的结构有两个,分别是JsonToken和JsonScope:···public enu...

2020-05-04 10:20:24 269

原创 linux内存初始化过程bootloader部分

OS负责内存分配和回收,但在这之前,一定要知道硬件可用内存的情况。在机器启动的时候,OS还没发挥作用之前,BIOS会对硬件资源做一次检查,并将信息保存在特定的位置(当然也是存储介质,大部分情况是内存),操作系统内核被加载完成之后,将硬件资源信息读取出来,然后会将这部分内存回收掉。下面详细来说明bootloader在内存方面为操作系统所做的准备工作。以linux0.11的启动过程为例,了解其过程。...

2020-05-04 09:12:26 320

原创 linux内核源码main.c源码分析

前面分析了boot.s和head.s,终于可以调用c语言编写的代码,从汇编中解脱出来。#define __LIBRARY__#include <unistd.h>#include <time.h>/* * we need this inline - forking from kernel space will result * in NO COPY ON WR...

2020-05-04 09:10:39 656

原创 linux内核源码head.s分析

在boot.s中,内核已经移至0x0000 0000处,并且开始执行,首先执行的就是head.s,这部分代码执行完后,也会被覆盖,严格意义上来讲,不是完全属于内核代码。这部分代码采用AT&T汇编编写,下面来详细分析下其功能:/* * head.s contains the 32-bit startup code. * * NOTE!!! Startup happens at a...

2020-05-04 09:08:43 522

原创 androd源码编译

下载完android-5.1.1_9后,大约103G。

2019-07-14 14:22:16 175

原创 如何下载Android源码

我们使用清华的镜像来下载Android源码, 将 https://android.googlesource.com/ 全部使用 https://aosp.tuna.tsinghua.edu.cn/ 代替即可。其说明在https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/,可以查看。先下载repo文件,它是一个脚本:mkdir ~/binPATH=~/bi...

2019-07-04 01:22:06 471

原创 xml解析器获取过程

在上篇文章我们知道ResourceTypes.h中定义了ResXMLParser类但没有实现其方法,在头文件中声明,在具体的cpp文件中定义,是一种良好的设计思路,抽离公共的,差异化的东西,各自去实现。所以,我们来看下ResourceTypes.cpp如何去实现的:ResXMLParser::ResXMLParser(const ResXMLTree& tree) : mTree...

2019-07-03 01:14:24 331

原创 nasm生成elf文件

生成elf文件并非只能用gcc。nasm可以生成各个平台的中间文件和可执行文件。下面我们用nasm来生成hello.o:先写一个hello.s源文件section .data msg: db "hello world!",0ah,0dh; msglen: equ $ - msg;section .text global mainmain: mov eax,4; mov ebx...

2019-06-29 21:55:55 1721

原创 HashMap插入元素过程

hashmap采用数组和链表以及红黑树的基础数据结构,数组的查找时间复杂度为常数,链表为o(n),而红黑树是一种平衡树,稳定在log(n)。可以有很快的查找速度。先来看看放入元素的过程:public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}先会对key做一次hash:s...

2019-06-28 00:00:21 11212 2

原创 linux中间文件与可执行文件的区别

在源码中,会使用到各种变量以及方法,这些变量和方法,在程序执行之前,应当知道其具体的位置,也就是内存地址,当然,在有操作系统的主机上运行,这种地址也是虚拟地址。这些变量和方法,在编译后,变成各种符号,存放在编译生成物的符号表中,之后的链接的工作就是符号决议和重定位。在java中,class文件被jvm加载的时候会发生链接,在c语言中表现的更明显。我们在linux上来看看这个过程。先编写一个he...

2019-06-26 00:01:23 642

原创 Binder机制中Jni

在Service绑定成功后,会调用ServiceConnection的onServiceConnected方法,其中会传入一个IBinder参数。activity的bindService方法,最终会调用ActivityManagerService的bindService方法:public int bindService(IApplicationThread caller, IBinder to...

2019-06-20 23:23:08 1447

原创 AIDL示例

前面的文章,介绍了aidl的几个必要组成部分,以及其关系。这里由一个例子来更好的说明,并且,可以引向更深的问题。aidl在android应用层里面常用于单独进程的service与activity通讯。如果在同一个进程中的service与activity,当然没必要这样做。这两种使用service的方式,在形式上当然也是有区别的。现在我们要在一个单独的进程中,实现add方法,并且把结果返回给cl...

2019-06-19 00:55:52 446

原创 AIDL中的Proxy,Stub以及其关系

在上篇文章中,了解了ITest.java与Proxy,Stub三者的层次关系。public interface ITest extends android.os.IInterface{ //Stub是一个Binder,也是一个ITest public static abstract class Stub extends android.os.Binder implements com.ex...

2019-06-16 16:31:00 1422 1

原创 AIDL 结构

android中的进程,有的是有init.rc中启动,有的是通过ams调用fork来启动。ams当然是在init.rc中启动的。aidl用来定义进程之间的接口,由于android应用进程与他进程频繁通讯,所以有大量的aidl文件。在分析ams的aidl之前,先以一个简单的例子来看看其结构:// IText.aidlpackage com.example.aidl;// Declare an...

2019-06-16 15:49:48 408

原创 递归

递归 递归是计算机工作原理紧密结合后产生的一种思想。这种思想有两个必要的条件,一是f(n)与f(n-1)有关系,二是存在栈这种特殊结构。 栈 栈是种线性数据结构,其数据元素间存在一个对一个的关系。在cpu中有堆栈寄存器(Stack Segment)和栈指针(Stack Point),X86结构的cpu一般是向下增长,程序加载到内存后,系统为其分配一个栈区,此时sp指向的是栈顶。栈区的大小,也...

2018-05-21 23:40:14 240

原创 自定义VIEW中区域点击事件

自定义VIEW中通常要有响应事件的部分,做法是根据点击区域来响应。 上代码:public class MyView extends View { private final static String TAG = MyView.class.getSimpleName();private Paint xLinePaint;private Paint yLinePaint;private

2017-01-27 11:24:49 3412

android8.0.zip

android8.0源码as工程文件;压缩文件包括android.iml,android.ipr,android.iw;,将文件复制到源码根目录下,就可以用AS查看源码

2019-05-26

空空如也

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

TA关注的人

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