
Android深度探索
所有关于Android底层原理和技术分析,主要包括Android和Linux内核源代码分析(C++部分),Android Framework源代码(Java部分)分析、ROM定制、Android系统应用实现原理与源代码解析,Dalivk虚拟机原理分析和性能优化等。
蒙娜丽宁
华为HDE(HUAWEI Developer Experts),UnityMarvel创始人,开放原子基金会银牌讲师,51CTO学堂金牌讲师,IT畅销书作者。从事软件研究和开发超过20年,长期从事编译器、人工智能、Python、Go、JavaScript、Java及跨平台技术的研究和开发工作,曾出版超过40本IT图书。主要著作包括《Python从菜鸟到高手》、《Python爬虫从菜鸟到高手》、《奇妙的Python:神奇代码漫游之旅》。
展开
-
Android的init过程(二):初始化语言(init.rc)解析
Android的init过程(一)本文使用的软件版本Android:4.2.2Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性。在本文将会详细分析init最重要的一环:解析init.rc文件。init.rc文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚本写原创 2013-06-17 09:36:09 · 39009 阅读 · 10 评论 -
Android双机(网络和USB)调试及其完美ROOT
本文主要讲如下两个内容。1. 如何让一部Android手机带两台PC进行调试。2. 如何完美Root Android手机。 我曾经遇到过这样的问题,Mac OS X上测试Android的系统程序,大家都知道,Android源代码的编译通常需要Ubuntu Linux,所以在Mac OS X上安装了Vmware ubuntu。这样本没什么问题。将Android手机与MBP相连,系统会提示原创 2013-05-05 14:27:17 · 6424 阅读 · 0 评论 -
Android的init过程详解(一)
Android的init过程(二);初始化语言(init.rc)解析本文使用的软件版本Android:4.2.2Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地、剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助。本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现。 And原创 2013-04-14 20:06:42 · 8693 阅读 · 4 评论 -
使用Android NDK和Java测试Linux驱动
在Android模拟器和Ubuntu上测试Linux驱动三、使用AndroidNDK测试Linux驱动在Android系统中Linux驱动主要的使用者是APK程序。因此,Linux驱动做完后必须要用APK程序进行测试才能说明Linux驱动可以正常使用。由于上一节在Android虚拟机上使用C语言编写的可执行程序测试了Linux驱动,因此很容易想到可以利用Android NDK来测试Linux驱动原创 2013-03-14 08:52:40 · 5187 阅读 · 25 评论 -
在Android模拟器和Ubuntu上测试Linux驱动
开发可统计单词个数的Android驱动程序 在上一节已经实现了一个简单的Linux驱动程序,该驱动的功能是统计给定字符串中的单词数。并且在最后已经将该Linux驱动的源代码成功编译成动态Linux驱动模块word_count.ko。下一步就是测试该模块。测试的方法很多,最常用的就是直接在UbuntuLinux中测试。当然,这对于本章实现的Linux驱动是没问题的,但是对于需要直接访问硬件的原创 2013-03-04 22:39:25 · 6964 阅读 · 5 评论 -
Android驱动程序开发和调试环境配置
本文用《Android深度探索(卷1):HAL与驱动开发》的随书源代码为例详细说明如何配置Android驱动开发和测试环境,并且如何使用源代码中的build.sh脚本文件在各种平台(Ubuntu Linux、Android模拟器和S3C6410开发板)上编译、安装和测试Linux驱动。建议读者使用Ubuntu Linux12.04或更高版本实验本文的方法。最好用root账号登录Linux。一、安装原创 2013-03-03 23:08:23 · 7520 阅读 · 8 评论 -
开发可统计单词个数的Android驱动程序(3)
开发可统计单词个数的Android驱动程序(2)八、 指定回调函数 本节讲的内容十分关键。不管Linux驱动程序的功能多么复杂还是多么“酷”,都必须允许用户空间的应用程序与内核空间的驱动程序进行交互才有意义。而最常用的交互方式就是读写设备文件。通过file_operations.read和file_operations.write成员变量可以分别指定读写设备文件要调用的回调函数指针。原创 2013-02-25 04:55:17 · 6550 阅读 · 13 评论 -
开发可统计单词个数的Android驱动程序(2)
开发可统计单词个数的Android驱动程序(1)五、指定与驱动相关的信息虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息。一般需要为Linux驱动程序指定如下信息。1. 模块作者:使用MODULE_AUTHOR宏指定。2. 模块描述:使用MODULE_DESCRIPTION宏指定。3. 模块别名:使用MODULE_ALIAS宏指定。4. 开源协议:使用MODU原创 2013-02-17 12:16:51 · 8173 阅读 · 12 评论 -
Android深度探索(卷1):安装C/C++交叉编译环境
X86架构的CPU采用的是复杂指令集(Complex Instruction Set Computer,CICS),而ARM架构的CPU使用的是精简指令集(Reduced Instruction Set Computer,RISC)。由于这两种架构的CPU使用了不同的指令集,因此在X86架构上开发可运行在ARM架构上的程序就必须要使用交叉编译器。通常交叉编译器和相关工具包含的了很多可执行文件以及大原创 2013-01-16 15:52:32 · 6740 阅读 · 8 评论 -
开发可统计单词个数的Android驱动程序(1)
Android本质上是基于Linux内核的系统,也就是说Android就是一种Linux操作系统。只不过大多数时候都会运行在ARM架构的设备上,例如,Android手机、平板等。Android驱动实际上就是Linux驱动,只是这里使用Android深度探索(卷1):安装C/C++交叉编译环境 介绍的交叉编译器将Linux驱动编译成了ARM架构的,所以驱动可以安装在Android模拟原创 2013-01-21 00:16:16 · 4918 阅读 · 2 评论 -
《Android深度探索(卷1):HAL与驱动开发》新书发布
《 Android深度探索(卷1):HAL与驱动开发》分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Android和Linux的底层开发。本书使用的试验环境是Ubuntu Linux12.04 LTS、Android模拟器和S3C6410开发板。在第1篇详细介绍了如何搭建和使用这3个试验环境。原创 2013-01-24 23:17:06 · 8156 阅读 · 90 评论