Android平台开发指导(Android Porting Guide)(一)

    技术2022-05-20  57

    没有比这

    http://www.netmite.com/android/mydroid/development/pdk/docs/index.html

    更官方的android开发指导材料了,闲着无事就翻译了。

    本文为Android平台开发人员和Android设备制造商提供了底层开发指导。如果你对Android的上层应用开发很感兴趣,请访问Android Developers Site

    关于这份指导书

    这份指导书按照逻辑划分为几个部分(见目录)。在一个持续的开发过程中,Android是一个复杂的工程项目,随着版本和API的改变,这份指导书将会不断更新。

    至使用者

    对于精通嵌入式Linux的工程师而言,这本书非常有价值。但是,它的重点并不在普通的嵌入式Linux开发,而是更多提供Android平台的特色。

    初学Android

    对于初识Android的人而言,建议阅读以下文档:

    Android Develop site:这个网页提供了高版本的SDK文档;

    Android Open Source Project site:这个网页指导你如何获取源代码,建立开发环境和从事简单的工程开发。

    如果你准备在你的目标系统上定制和移植Android系统,请阅读系统编译概述。

    1.配置和编译

    1.1系统编译

    Android用一个定制的编译系统产生一系列工具,编译文件和文档。这一小节概述了Android编译系统和如何建立一个简单的编译环境。

    Android的编译系统是以GNU Make为基础,并且要求最新的版本(注意:Android所使用的最新的GNU Make规则可能并不会出现在GNU Make的网页上)。在开始之前,首先通过“make  -v”检查下你的编译环境的版本。如果你不是3.80或者更高版本的话,你需要升级你的GNU Make版本。

    理解makefile

    makefile文件定义了如何去建立一个系统的编译规则。典型的makefile包含以下一些元素:

    1. 名称:为你的编译目标取一个名称(LOCAL_MODULE := <build_name>);

    2. 局部变量:用CLEAR_VARS清除局部变量(include $ (CLESR_VARS));

    3. 所需要编译的文件:注明你的目标需要链接哪些源文件(LOCAL_SRC_FILES := main.c);

    4. 标记:编译选项(LOCAL_MODULE_TAGS := eng development);

    5. 库:定义你的目标所需要链接的库文件(LOCAL_SHARED_LIBRARIES := cutils);

    6. 模板文件:所包含的这些模板文件定义了生成目标的类型,同时包含了生成此种目标的编译工具(include $(BUILD_EXECUTABLE))。

    下面一段代码举例说明一个典型的makefile

    LOCAL_PATH := $(my-dir) include $(CLEAR_VARS) LOCAL_MODULE := <buil_name> LOCAL_SRC_FILES := main.c LOCAL_MODULE_TAGS := eng development LOCAL_SHARED_LIBRARIES := cutils include $(BUILD_EXECUTABLE) (HOST_)EXECUTABLE,(HOST_)JAVA_LIBRARY,(HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,(HOST_)STATIC_LIBRARY,PACKAGE,JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,COPY_HEADERS, KEY_CHAR_MAP

    为了提高代码的可读性,上面这段代码中包含了一些的书写风格。

    Layers

    下表描述了编译系统所包含的抽象层。

    每一个抽象层都是以一对多的关系和上面一层相关。例如,一种处理器架构可以运行在很多种目标板上,而每一个目标板又有很多设备。你可以在给定的抽象层上定义一个元素作为同一层元素的一个特例,这样就避免了复制和简化了维护。

    Layer

    Example

    Description

    Product

    myProduct, myProduct_eu, myProduct_eu_fr, j2, sdk

    产品层定义了一个产品的详细说明,包括编译的模块和配置。你可以基于一种特定的应用提供一种设备上的几种不同版本。例如,基于摄像技术。

    Device

    myDevice, myDevice_eu, myDevice_eu_lite

    设备层代表了构建在设备上的物理层。例如,南美的可能包含QWERTY键盘而法国的可能包含AZERTY键盘。连接到设备层的典型外设。

    Board

    sardine, trout, goldfish

    开发板层代表了一个产品的缩减版。当然你可以连接一些外设上去。

    Arch

    arm (arm5te) (arm6), x86, 68k

    架构层描述了你目标系统的处理器架构

     

    编译Android系统

    这部分说明如何编译缺省的Android版本。一旦你熟悉了普通的编译过程,你就可以尝试着编译一个能运行在你自己的设备上的Android系统。

    设备编码

    为了做一个普通Android编译过程,源码中build/envsetup.sh中包含了一些环境变量和函数定义。例如:

    转载请注明原文地址: https://ibbs.8miu.com/read-2232579.html

    最新回复(0)