前言

首先学习Android系统移植与驱动开发需要理解两个概念

1.什么是“移植”

一般来说Android原生的代码支持的设备并不多(应该是只支持Google亲儿子系列),所以我们要在自己的设备上完美支持Android,我们就需要做一些适配,使得Android能够识别我们的各种硬件,这个过程就是“移植”了。

2.驱动开发

在这个移植的过程我们就必须要了解驱动开发,即我们需要了解Linux驱动,作为初学者,我们只需要知道任何的Linux驱动都有一个加载函数和一个卸载函数即可,它们分别通过module_init和module_exit宏指定。

了解Android系统架构

Android是一个非常棒的嵌入式操作系统。它有自己完善的系统架构,分为5层:

  • 1、Linux内核层

Android是基于Linux内核的(Linux内核提供了安全性、内存管理、进程管理、网络协议和驱动模型等核心系统服务),Linux内核层为各种硬件提供了驱动程序,如显示驱动、相机驱动、蓝牙驱动、电池管理等等。

  • 2、硬件抽象层(Hardware Abstraction Layer)

Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。

  • 3、Android系统运行层

这一层包括Android Runtime和原生态的C/C++库。
通过C或者C++库为Android系统提供主要的特性支持,例如Surface Manager管理访问显示子系统和从多模块应用中无缝整合2D和3D的图形,WebKit提供了浏览器支持等。可以使用 Android NDK 直接从访问某些原生态库。
Android运行时,其中包括了ART虚拟机(Android 5.0之前是Dalvik虚拟机,ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。),每个Java程序都运行在ART虚拟机上,该虚拟机专门针对移动设备进行了定制,每个应用都有其自己的 Android Runtime (ART) 实例。此外,Android运行时还包含一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能,包括一些 Java 8 语言功能。

  • 4、Java API 框架层

这一层主要提供了构建应用程序时可能用到的各种API,开发者通过这一层的API构建自己的APP,这一层也是APP开发人员必须要掌握的内容。

  • 5、系统应用层

所有安装在手机上的系统应用都属于这一层,用户自己开发的应用也属于这一层。

系统架构图

驱动开发以及系统移植所需知识储备:

(1)硬件知识:电子通信方面的内容;主要是能看懂电路原理图基本就可以了。

(2)linux操作系统相关知识:包括linux虚拟机使用,linux基本常用命令。

(3)基本脚本知识:shell脚本,简单Makefile。

(4)了解编译系统:编译工具的选择,系统的配置过程,编译过程 -> 一般新项目开始搭建的时候会用到。

(5)核心内容,linux 系统驱动的各种框架,各种机制。

(6)个人认为,android系统的启动流程非常关键,有利于建立整个系统的宏观概念,不需要详细深挖,但要知道大概的流程。

(7)android 内核系统机制,应该是linux系统编程和网络编程的揉合。

更多相关文章

  1. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  2. Android(安卓)version and Linux Kernel version
  3. 编译android的linux内核
  4. Ionic 运行报错No resource identifier found for attribute 'ap
  5. android 开机直接运行app并当做手机桌面
  6. Android出现java.lang.RuntimeException: Can't toast on a thre
  7. flutter-使用第三方库,编译和运行版本不一致问题 2
  8. Android(安卓)4.0.1 源码下载,编译和运行
  9. Android(安卓)RabbitMQ使用之RabbitMQ安装及配置

随机推荐

  1. Android 4.0源码放出
  2. Thread
  3. Android给控件添加默认点击效果
  4. 在浏览器里判断设备来源,跳转到不同的App
  5. Xamarin.Android使用教程之在Android和Xa
  6. Eclipse & Android(安卓)模拟器
  7. Android上oprofile使用说明
  8. 自定义Android(安卓)ListView控件:Expanda
  9. Android开发工程师三境界
  10. Android中资源的访问