`

Android平台移植应该做两步工作

 
阅读更多

IT168

  Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。在移植的过程中,把握关键要点,减少工作量是一个重要的方面。从工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。

  移植方面主要的工作有两个部分:

  Linux驱动

  Android系统硬件抽象层

  Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。

  Android移植的主要工作如图1-4所示。

Android平台移植应该做的主要工作

图1 Android移植的主要工作

  在具有了特定的硬件系统之后,通常在Linux中需要实现其驱动程序,这些驱动程序通常是Linux的标准驱动程序,在Android平台和其他Linux平台基本上是相同的。主要的实现方面是Android系统中的硬件抽象层(Hardware Abstract Layer),硬件抽象层对下调用Linux中的驱动程序,对上提供接口,以供Android系统的其他部分(通常为Android本地框架层)调用。

  提示:Android硬件抽象层的接口是本地移植层的接口,不属于标准API,不具有向前或者向后兼容性。

  在Android系统需要移植的内容,主要包含了以下的各个部分:

  显示部分(Display)

  包括framebuffer驱动+Gralloc模块(可选择是否实现)

  用户输入部分(Input)

  包括Event驱动+EventHub(Android标准内容)

  多媒体编解码(Codec)

  包括硬件Codec驱动+Codec插件(如OpenMax)

  3D加速器部分(3D Accelerator)

  包括硬件OpenGL驱动+OpenGL插件

  音频部分(Audio)

  包括Audio驱动+Audio硬件抽象层

  视频输出部分(Video Out)

  包括视频显示驱动+Overlay硬件抽象层

  摄像头部分(Camera)

  包括Camera驱动(通常是v4l2)+Camera硬件抽象层

  电话部分(Phone)

  Modem驱动程序+RIL库

  全球定位系统部分(GPS)

  包括GPS驱动(通常为串口)+GPS硬件抽象层

  无线局域网部分(WIFI)

  包括Wlan驱动和协议+WIFI的适配层(Android标准内容)

  蓝牙部分(Blue Tooth)

  包括BT驱动和协议+BT的适配层(Android标准内容)

  传感器部分(Sensor)

  包括Sensor驱动+Sensor硬件抽象层

  震动器部分(Vibrator)

  包括Vibrator驱动+Vibrator硬件抽象层(Android标准内容)

  背光部分(Light)

  包括Light驱动+ Light硬件抽象层

  警告器部分(Alarm)

  包括Alarm驱动和RTC系统+用户空间调用(Android标准内容)

  电池部分(Battery)

  包括电池部分驱动+电池的硬件抽象层(Android标准内容)


   Android中具有很多组件,但并不是每一个部件都需要移植,对于一些纯软的组件,就没有移植的必要。对于一些部件,例如浏览器引擎,虽然需要下层网络的支持,但是并非直接为其移植网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。

  Android的移植主要可以分成几个类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;和硬件相关的加速部分,包括媒体编解码和OpenGL;音视频输入输出环节,包括音频,视频输出和摄像头部分;连接部分,包括无线局域网,蓝牙,GPS;电话部分;附属部件:包括传感器、背光、振动器等。

  除了以上的移植方面,电源管理也是非常重要的一个方面,它和Android的各个子系统都有关系。

  Android系统主要需要移植部件如图1-5所示。

Android平台移植应该做的主要工作

图1-5 Android系统主要需要移植部件

  对于大部分子系统,硬件抽象层和驱动程序都需要根据实际系统的情况实现,例如:传感器部分、音频部分、视频部分、摄像头部分、电话部分。也有一些子系统,硬件抽象层是标准的,只需要实现Linux内核中的驱动程序即可,例如:输入部分、振动器部分、无线局域网部分、蓝牙部分等。对于有标准的硬件抽象层的系统,有的时候通常也需要做一些配置工作。

  时至今日,随着Android系统的发展,它已经不仅仅是一个移动设备的平台,也可以用于消费类电子和智能家电,例如:上网本、电子书、数字电视、机顶盒、固定电话等。在这些平台上,通常需要实现比移动设备更少的部件。一般来说,基本用户界面部分(包括显示和用户输入)是需要移植的,其他部分是可选的。例如:电话系统、振动器、背光、传感器等一般不需要在非移动设备系统来实现;对于一些固定位置设备通常也不需要实现GPS系统。

分享到:
评论

相关推荐

    将Cocos2dx从win32移植到android平台 不用cygwin

    总结,从Win32移植Cocos2d-x项目到Android平台并不复杂,关键在于理解两个平台之间的差异,正确配置环境,调整项目设置,并解决可能出现的兼容性问题。通过这个过程,开发者可以学习到跨平台开发的基本技巧,这对于...

    将Android移植到FS2410开发板上(转

    将Android移植到FS2410开发板是一项复杂而细致的工作,涉及软件和硬件两个层面的调整。通过对内核的定制化编译以及对已知问题的逐一排查和解决,最终能够实现Android系统在FS2410开发板上的稳定运行,极大地提升了...

    基于Zynq平台的Android操作系统移植.pdf

    【基于Zynq平台的Android...总结来说,基于Zynq平台的Android操作系统移植是一项复杂但重要的工作,它涉及到系统级的软硬件集成,能够促进Zynq平台在多种应用场景中的广泛应用,同时也推动了多领域的技术融合和发展。

    cocos2d-x配置教程,主要关于移植android

    总的来说,cocos2d-x的Android移植过程需要耐心和细心,但是一旦设置好,可以极大地提高开发效率。通过理解这些步骤和工具的作用,开发者能够更好地管理和维护基于cocos2d-x的Android游戏或应用。

    基于Android的数据库移植管理.pdf

    《基于Android的数据库移植管理》 在Android应用开发中,SQLite数据库扮演着至关重要的角色,它是Android系统中默认的轻量级数据库,适用于处理大量的数据存储。SQLite数据库具有开源、与操作系统无关的特点,特别...

    PN5xx系列移植参考文档.zip

    在Android系统中移植PN544,我们需要做以下几步: 1. **驱动开发**:编写或修改内核驱动,使系统能够识别并控制PN544芯片。这通常涉及读写I2C或SPI接口,配置中断处理等。 2. **HAL层适配**:实现PN544的HAL,它是...

    cocos2d-x的win32工程移植到Android

    本文将详细介绍如何将基于cocos2d-x引擎开发的win32项目移植到Android平台。这一过程涉及多个步骤,包括配置Android工程生成器、创建Android工程、导入代码与资源以及编辑JNI文件夹下的关键配置文件。通过本指南,您...

    基于Android平台节水灌溉客户端设计.pdf

    "基于Android平台节水灌溉客户端设计" 本文主要介绍了基于Android平台的节水灌溉客户端设计,旨在实现智能灌溉系统,提高水资源利用率和减少劳动力成本。该系统通过Android平台上的Socket网络编程和SQLite数据库...

    GT1X_Driver_for_Android_v1.4

    《GT1X驱动在Android平台上的移植指南》 在Android操作系统中,硬件设备与系统间的交互依赖于驱动程序。本文将深入探讨GT1X系列驱动在Android系统中的移植过程,适用于GT1151、GT1152、GT9286、GT1143、GT1133、GT...

    Android IjkPlayer 播放RTSP/RTMP视频流 Demo 可运行

    IjkPlayer是FFmpeg的Android和iOS移植版本,FFmpeg是一个跨平台的多媒体处理框架,能够解码、编码、转换和流化音频和视频。IjkPlayer的优势在于其出色的性能和广泛的格式支持,包括RTSP和RTMP。 RTSP是一种用于控制...

    基于Android平台的车牌识别系统的研究

    最后,在分析常见的字符分割方法的优缺点基础上,本文研究了一种结合先验知识与垂直投影的字符分割处理方法,该方法通过初步分割与精确分割两步处理,能够达到准确分割七个车牌字符的目的,对字符粘连的现象也有很好...

    Android and C 文档.rar

    理解JNI的工作原理和接口定义是Android+C开发的第一步。 2. **NDK(Native Development Kit)**:Google提供的NDK工具集使得开发者可以使用C/C++编写Android应用的一部分,从而利用原生代码的性能优势。NDK包含了一...

    android手机教程

    理解这两种语言的基本语法和特性是学习Android开发的第一步。 四、Android应用架构 Android应用由多个组件构成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content ...

    Acer Android Liquid刷机教程

    在Acer Android Liquid的刷机过程中,有两个关键的ROM值得一提: - **AOSP 2.2 ROM**:基于Android Open Source Project的2.2版本,由phh维护,专注于kernel优化和功能移植,以实现更完善的非官方AOSP体验。已知的...

    Android GPS详解及示例代码

    这里面的第一步:获取用户当前位置,我们就可以用Android的GPS定位服务来得到。Android提供了基于网络的定位服务和基于卫星的定位服务两种。在设置->位置和安全设置里面的前三项就是,最后一个增强型GPS是为了辅助...

    国嵌视频地址

    1. **嵌入式体验入门班**:这是学员接触嵌入式Linux的第一步,重点在于了解嵌入式系统的概念、工作原理以及嵌入式Linux的基本操作,为后续的学习打下坚实的基础。 2. **嵌入式Linux应用开发班**:在此阶段,学员将...

    基于QT的象棋代码

    第一章 1.QT基础介绍 2.象棋整体框架介绍 3.使用QT绘制棋盘 ...2.两步的人工智能 4.走n步的人工智能 5.优化-剪枝算法 6.最小值最大值算法解释 第四章 1.网络版本的实现 2.android移植 3.复习参考代码

    1、交叉编译器.zip

    3. **交叉编译器与常规编译器的区别**:常规编译器在相同的硬件平台上编译和运行程序,而交叉编译器则在不同硬件平台上进行这两步。例如,一个在x86架构的PC上运行的交叉编译器可以生成ARM架构的嵌入式设备可执行的...

    全志平台adb驱动(线刷)

    安装全志平台ADB驱动的步骤通常包括以下几步: 1. 连接设备:首先用USB数据线将全志平台设备连接到电脑。 2. 检查设备管理器:打开设备管理器,查看是否能找到设备。如果显示为“未知设备”或者有黄色感叹号,说明...

    安卓4.1特效

    要将这些特效移植到Android 2.3,你需要做以下几步: 1. **获取源代码**:首先,你需要下载Android 4.1系统的源代码,从中提取出anim、animator和interpolator目录中的相关XML文件。 2. **反编译工具**:使用反...

Global site tag (gtag.js) - Google Analytics