android
文章平均质量分 74
windcake
春风亲吻我像蛋挞
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android系统的启动过程
init是Linux用户空间的第一个进程,Kernel启动后会调用/system/core/init/Init.cpp的main()方法.int main(int argc, char** argv) { ... init_parse_config_file("/init.rc"); //解析init.rc文件 //执行rc文件中触发器为 on early-init的语句原创 2017-03-14 20:31:59 · 350 阅读 · 0 评论 -
在Ubuntu16.04上下载并编译Android源代码
Android源代码位于Google的Git代码库中,由于Android源代码工程过于复杂庞大,所以Google以Git为基础用Python脚本,写了一个管理工具Repo。 1.安装Repo 在安装Repo之前,假定已经安装好了git。 mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-down...原创 2018-02-22 19:07:24 · 2755 阅读 · 0 评论 -
在Ubuntu16.04上下载并编译Android内核源代码
上一篇文章提到,启动模拟器使用的Android内核镜像是AOSP提前编译好的。而AOSP中又不包含Linux Kernel的源码。为了能全方位立体化的搞懂Android那就自己下载并编译Linux Kernel for Android吧。 1.下载 Linux Kernel for Android的源代码使用Git管理 首先我们新建一个文件夹用来装即将下载的代码 mkdir ker...原创 2018-02-26 22:54:30 · 822 阅读 · 0 评论 -
编写一个Android Linux内核驱动并用C可执行程序测试
罗升阳博客里是典型的字符型设备的驱动实现,但是我打算实现一个misc设备驱动。misc设备本质上还是一个字符设备,主设备号为10,但是它实现起来比较简单。 我们驱动要实现的功能是,用户空间调用设备的write函数写入一个int类型的值,然后再调用read函数把它读出来。功能简单,但这一来一往足以让我们了解驱动的写法。 驱动编写 驱动是内核层面的事情,所以我们先进入到内核源码的dr...原创 2018-03-11 23:50:57 · 857 阅读 · 0 评论 -
为设备hello增加JNI方法并在Frameworks层增加硬件访问服务
我们编写的hello设备驱动是运行在内核层的。我们写的测试程序运行在用户空间,但却是用C语言编写。Android应用使用JAVA编写,想要在Android中实现应用和驱动的交互,也就是实现JAVA代码和c语言的交互,这其中必然会使用到JNI技术。 由于服务单独运行在一个进程中,而且会为运行在不同进程的服务或者应用提供接口。那么他们之间的交互,必然会用到IPC,具体到Android中,就是Bind...原创 2018-03-17 22:51:48 · 865 阅读 · 0 评论 -
编写一个Android应用程序测试HelloService
在经历了驱动层的窒息,Native层的缺氧,Framework层的束缚之后,我们终于来到了熟悉应用层,可以自由呼吸了。这篇文章的目的是写一个Android应用,通过getSystemService方法拿到HelloManager,然后调用readVal和writeVal方法,验证上篇文章写的JNI方法和服务能否正常运行。 打开Android Studio新建一个Android项目,Activit...原创 2018-03-18 22:52:08 · 628 阅读 · 0 评论
分享