当前位置: 网学 > 编程文档 > Android > 正文

buildingAndroid_notes

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:网学会员编辑为广大网友搜集整理了:buildingAndroid_notes绩等信息,祝愿广大网友取得需要的信息,参考学习


    Android使用的build系统与普通Linux软件的build工具有很大不同。
    普通的软件项目一般使用autotools工具,包括autoconf,automake,libtool等,利用这些工具来自动生成Makefile。
    而Android创建了一套自己的系统来生成Makefile。
    Android源码中的build/core/build-system.html
    Androidbuild系统定义了一套自己的变量,宏等,如LOCAL_MODULE_TAGS,LOCAL_PACKAGE_NAME等,如何代入这些变量,如何展开这些宏,都在build/core目录下的文件中定义。
    开发人员可以使用这些变量编写Androidbuild系统的Makefile--Android.mk;每个模块,如一个应用,一个共享库等,都有一个自己的Android.mk。
    在编译的时候,Android.mk中的宏就会被展开成相应的Make规则,变量也会代入相关的规则。
    下面以packages/apps/AlarmClock/Android.mk举例介绍:
    -------------------------------------------------------
    LOCAL_PATH:=$(callmy-dir)
    include$(CLEAR_VARS)
    LOCAL_MODULE_TAGS:=engdevelopment
    LOCAL_SRC_FILES:=$(callall-subdir-java-files)
    LOCAL_PACKAGE_NAME:=AlarmClock
    include$(BUILD_PACKAGE)
    -------------------------------------------------------
    关于这些变量的含义,在build/core/build-system.html中都有具体介绍。
    值得注意的是,
    如果是生成一个可执行程序,则引用BUILD_PACKAGE,
    如果生成一个library,则引用BUILD_SHARED_LIBRARY。
    我们可以模仿现有的Android.mk去创建自己的Android.mk。
    build/envsetup.sh中引入了几个方便的命令可用来帮助执行build命令。
    m:执行对整个Android源码的build
    mm:执行对当前目录下模块的build.
    printconfig:当前build的配置情况。
    在整个Android源码编译完成后,生成的二进制文件以及image等都安装在out/目录下。
    通过如下命令序列可以启动emulator(假设Android源码安装在~/mydroid目录下):
    exportANDROID_PRODUCT_OUT=~/mydroid/out/target/product/generic/
    cd~/mydroid/out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates
    ./emulator
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    首先按照source.android/download配置系统
    然后下载android平台文件
    repoinit-ugit://android.git.kernel.org/platform/manifest.git
    reposync
    在平台所在文件夹下运行
    .build/envsetup.sh
    在build/core/main.mk文件中的
    ifeq($SDK_ONLY),true)行前面
    添加SDK_ONLY:=false
    BUILD_TINY_ANDROID:=true
    保存。
    在平台所在文件夹下,运行mm,系统将自动编译整个平台。
    所生成的文件的存放路径也会提示出来。
    如果提示和libpixelflinger与hardware_legacy依赖相关的错误,
    则修改
    Android.mk中的LOCAL_SHARED_LIBRARIES
    将hardware_legacy行去掉。
    Tag标签:android,android
    buildsystem,androidplatform
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    在kernel子目录下存放的就是Android的LinuxKernel了,通过和标准的Linux2.6.25Kernel的对比,我们可以发现,其主要增加了以下的内容:
    1.基于ARM架构增加Gold-Fish平台,相应增加的目录如下:
    kernel/arch/arm/mach-goldfish
    kernel/include/asm-arm/arch-goldfish
    Gold-Fish平台采用的是ARM926TCPU作为BaseBand处理器,该CPU主频至少为200MHZ.采用MSM7201ACPU(ARM11)作为主CPU,其主频为528MHZ.
    2.增加了yaffs2FLASH文件系统,相应增加的目录为:kernel/fs/yaffs2
    实际上,Android包经过编译后生成的system.img和ramdisk.img文件就是yaffs2格式的包.
    3.增加了Android的相关Driver,相应目录为:kernel/drivers/android
    主要分为:
    AndroidIPC系统:Binder
    Android日志系统:Logger
    Android电源管理:Power
    Android闹钟管理:Alarm
    Android内存控制台:Ram_console
    Android时钟控制的gpio:Timed_gpio
    4.增加了switch处理,相应的目录为:kernel/drivers/switch/
    5.增加了一种新的共享内存处理方式,相应增加的文件为:kernel/mm/ashmem.c
    6.其他为Linux-2.6.25内核所做的补丁等等,例如BlueTooth,在此不做详细分析
    另外GoldFish平台相关的驱动文件如下:
    1.字符输出设备:kernel/drivers/char/goldfish_tty.c
    2.图象显示设备:(FrameBuffer)kernel/drivers/video/goldfishfb.c
    3.键盘输入设备:kernel/drivers/input/keyboard/goldfish_events.c
    4.RTC设备:(RealTimeClock)kernel/drivers/rtc/rtc-goldfish.c
    5.USBDevice设备:kernel/drivers/usb/gadget/android_adb.c
    6.SD卡设备:kernel/drivers/mmc/host/goldfish.c
    7.FLASH设备:
    kernel/drivers/mtd/devices/goldfish_nand.c
    kernel/drivers/mtd/devices/goldfish_nand_reg.h
    8.LED设备:kernel/drivers/leds/ledtrig-sleep.c
    9.电源设备:kernel/drivers/power/goldfish_battery.c
    10.音频设备:kernel/arch/arm/mach-goldfish/audio.c
    11.电源管理:kernel/arch/arm/mach-goldfish/pm.c
    12.时钟管理:kernel/arch/arm/mach-goldfish/timer.c
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
  • 下一篇资讯: Beginning_Android_2中午版5
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号