• 第四章


    源代码的下载和编译

    1.1下载,编译和测试Android源代码

    Android源代码包含内嵌在Android系统中的应用程序的源代码,Android SDK带的各种工具的源代码和Android NDK的源代码

    1.1.1配置Android源代码下载环境

    1.创建一个用于存放下载脚本文件(repo)的目录

    #mkdir ~/bin

    #PATH=-/bin:$PATH

    2.下载repo脚本文件

    #curl http://dl-ssl.google.com/dl/googlesource/git-repo>~/bin/repo

    #chmod a+x ~/bin/repo

    3.创建用于存放Android源代码的目录

    #mkdir android_source

    #cd android_source

    4.初始化

    #repo init –u http://android. googlesource.com/platform/manifest

    # repo init –u http://android. googlesource.com/platform/manifest –b android-4.0.1_r1

    5.开始下载Android源代码

    #repo sync

    1.1.2Android源代码目录结构解析

    包括abi,bionic,bootable,build,cts,dalvik,development,device,docs,external,ndk等等目录名

    1.1.3下载Android源代码中的一部分

    方法一:使用repo sync命令

    #repo sync platform/bootable/recovery

    # repo sync platform/packages/apps/Camera

    方法二:使用git clone命令

    #git clone http://android. googlesource.com/<project name>

    #git clone http://android. googlesource.com/ platform/bootable/recovery

    1.1.4编译Android源代码

    1.初始化编译环境

    #source build/envsetup.sh

    #.build/envsetup.sh

    //例如,编译Calendar工程

    #cd /working/android2.3.4_sre

    #source build/envsetup.sh

    #cd packages/apps/Calculator

    #mm

    2.选择目标

    #lunch full-eng

    3.编译Android源代码

    #make

    #make –j4

    1.1.5out目录结构分析

    out目录是存放编译Android源代码生成的目标文件的默认目录。

    out目录中有两个直接子目录:host 和 target

    out/host目录,主要是一些编译过程中需要的一些库和工具

    out/target目录包含common 和 product

    1.1.6将自己的APK作为Android内置程序发布

    为了测试system.img文件,可以将一个自己生成的apk程序嵌入system.img文件中,这样在测试system.img文件时这个apk程序就和其他原生的应用程序一样出现在应用程序列表中,而且该程序无法卸载(除非获取root权限,并直接将apk文件删除)。

    1.1.7用模拟器测试system.img文件

    生成system.img文件需要一个mkyaffs2image命令行工具。该命令行工具可以将system目录打包成system.img文件。

    #mkyaffs2image system system.img                          //重新生成system.img文件

    #emulator –avd myavd –system system.img –data userdata.img//使用模拟器测试刚生成的system.img文件

    1.2下载和编译Linux内核源代码

    1.2.1下载Linux内核源代码

    #git clone http://android. googlesource.com/kernel/common.git //下载最新的linux内核源代码

    #git branch –a                                          //查看当前在哪个远程版本库

    #git checkout –b android-3.0 remotes/origin/android-3.0//导出linux3.0的内核

    #git clone http://android. googlesource.com/kernel/goldfish.git  //下载Google为Android模拟器提供的linux内核

    #git checkout –b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29//进入goldfish目录,导出goldfish

    1.2.2Linux内核源代码的目录结构

    1.2.3安装Android内核的编译环境

    交叉编译器:指在A架构的CPU上编译可在B架构CPU上运行的程序。

    原因:交叉编译器无法在目标平台上安装或者目标平台性能较低,所以不得已才在性能较高,限制较少的平台上进行编译。

    做法:在Makefile文件中找到ARCH 和CROSS_COMPILE并设置变量

            ARCH    ?=arm

            CROSS_COMPILE?=arm-none-linux-gnueabi-

          1.准备工作

           arm-linux-gcc-4.3.2.tgz   arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2

    2.解压编译器

    #tar zxvf arm-linux-gcc-4.3.2.tgz –C

    #tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C

    3.验证交叉编译器是否安装成功

    #ls /usr/local/arm –L

    4.安装libncurses5

    #apt-get install libncurses5 -dev

    1.2.4配置和编译Linux内核

    1.编译内核

    #export PATH=/root/compilers/arm-none-linux-gnueabl/bin:$PATH

    #cd ~/linux_kernel

    #make clean

    #make

    2.安装QT

    apt-get install libqt4-dev

    3.在Android模拟器中测试linux内核

    emulator –avd myavd –kernel /root/kernel/goldfish/arch/arm/boot/zImage

  • 相关阅读:
    格式布局
    hive UDAF源代码分析
    HIVE自定义函数 UDF
    HIVE函数UDAF 最大值
    牛顿法求平方根 scala
    mongoDB
    java类的加载机制
    类的加载过程
    Redis学习手册(目录)
    我与小娜(05):变换时空,重返北京
  • 原文地址:https://www.cnblogs.com/yajuan2013/p/5445858.html
Copyright © 2020-2023  润新知