1、Android移植分为两部分:应用移植和系统移植;

2、应用移植:指将第四层的应用程序一直到某一特定硬件平台上。

  (1)为保证应用程序能在新的平台上正常运行,需要对源代码就行一些修改,因为硬件平台之间以及Android SDk API之前都可能存在差异。如果无法获取应用程序的源代码,只能重新在新的硬件平台上实现;

  (2)Android应用移植不涉及驱动和HAL程序库(注:HAL程序库是Android新增加的硬件抽象层);

3、系统移植:指让Android操作系统在某一特定硬件平台上运行。

  (1)使操作系统在特定硬件平台上运行的条件:

    ①操作系统支持硬件平台上的CPU架构。Linux内核本身支持很多常用的CPU架构,如ARM,X86,PowerPC,因此不需要做过多的改动,但不代表不做改动;

    ②识别硬件平台上的各种硬件。这些工作主要也是由Linux内核完成的,主角是Linux驱动。

  (2)HAL(Hardware Abstraction Layer,硬件抽象层)

    ①位于第二层,也是普通的Linux程序库(.so文件),Android SDK通过HAL之间访问Linux驱动(一般的Linux系统都是由应用程序直接访问驱动)。

    ②Google公司这样设计的目的:Linux内核基于GPL开源协议,但是许多驱动厂商不想开放源代码,所以增加了HAL层,可以将Linux驱动的业务逻辑放在HAL层,这样处理Linux驱动开源技术只是一个空架子。

4、总结:

  (1)Android移植的主要工作:移植Linux驱动和移植HAL;

  (2)Android移植的基本原则是尽可能找到驱动和HAL的源代码,在源代码的基础上改比从头开始编写容易得多,实在无法获取源代码,就只能从头开始做起了;

  (3)Android移植很大程度上是Linux内核移植,Linux内核移植主要是移植驱动程序。不同Linux版本的驱动程序不能通用,需要修改源代码,并在新的Linux内核下重新编译才可以运行在新的Linux内核版本下。

1.2Android系统移植的主要工作的更多相关文章

  1. 1Android系统移植与驱动开发概述

    1.Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库.Android SDK API.应用程序,要熟悉每一层的内容以及功能: 2.Android移植分为应用移植和系统移 ...

  2. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  3. 第一章Android系统移植与驱动开发概述--读书笔记

    以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构. ...

  4. ARM开发板系统移植-----u-boot的编译

    本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果.其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发 ...

  5. Android系统移植与驱动开发----第一章

    第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...

  6. 浅谈Android系统移植、Linux设备驱动

    一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...

  7. 第一章 Andorid系统移植与驱动开发概述 - 读书笔记

    Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...

  8. MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意

    32位未修改源码与修改版的代码下载: git clone git@github.com:youzhonghui/MiniCRT.git MiniCRT 64位 linux 系统移植记录 MiniCRT ...

  9. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

随机推荐

  1. 安装完CentOS 7 后必做的七件事[转]

    CentOS是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后,首要的工作肯定是加强它的安全性,以下列出的七件事 ...

  2. 【转】select和epoll模型的差异

    http://www.cppblog.com/converse/archive/2008/10/12/63836.html epoll为什么这么快 epoll是多路复用IO(I/O Multiplex ...

  3. Linux系统时间设置(转载)

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

  4. Java多线程之简单的线程同步实例

    数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEve ...

  5. [ActionScript] AS3利用SWFObject与JS通信

    首先介绍SWFObject的用法: swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flash ...

  6. DimDate

    CREATE TABLE [dbo].[DimDate]( [DateKey] int NOT NULL , [FullDate] DATE NOT NULL , [MonthNumberOfYear ...

  7. 批处理操作mysql数据库

    批处理操作mysql数据库 1.使用批处理自动登录mysql数据库 @echo offcd C:\program files\mysql\mysql server 5.5\binmysql -u ro ...

  8. secureCRT如何远程桥接CentOS.

    1.将虚拟机的网络连接方式设置为桥接 2.关闭CentOS的防火墙,这里我是直接从页面上关闭的,没有使用命令 3.设置CentOS的ip为静态地址,不允许自动获取,这样远程连接不需要总修改地址.由于我 ...

  9. 使用spring的邮件发送功能

    使用spring提供的MailSender和JavaMailSender类. 1.邮件对象类 package cn.luxh.app.mail; import java.util.List; impo ...

  10. linux下udp编程

    #include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netine ...