zoukankan      html  css  js  c++  java
  • Ubuntu 10.04 下android 源码下载与编译

     

    一.PC工作环境准备

    首先安装一些必须的工具包:(根据安装的ubuntu 64和32位系统,进行如下环境配置)

    Ubuntu Linux (32-bit x86):
    sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 

    Ubuntu Linux (64-bit x86):
    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev


    下载jdk 1.5 :

    apt-get install sun-java5-jdk


    设置环境变量。
    根据自己的java安装,可以在.bashrc文件中加入如下两行:

    gedit ~/.bashrc (打开bashrc)

    export JAVAHOME=/usr/lib/jvm/java-1.5.0-sun(根据自己机子的jdk安装路径,就是寻找到java、javac等的路径)
    export PATH=$PATH:$JAVAHOME/bin:$JAVAHOME/jre/bin:$JAVAHOME/bin/lib
    export CLASSPATH=.:$JAVAHOME/jre/bin:$JAVA_HOME/lib

    二.代码下载


    在用户目录下,创建一个存放Andorid目录,在里面建个bin目录。
    1、Install Git and Repo tools 用于版本管理和代码同步
        sudo apt-get install git-core curl
        mkdir sourcecode 

        cd      sourcecode
        mkdir bin
        cd bin
        curl
    http://android.git.kernel.org/repo> repo
        sudo chmod a+x repo  (获取repo权限)

        可以为repo命令修改环境变量,在.bashrc文件中加入如下:
        export PATH=$PTAH:~/bin/ (千万别漏了“~”,把路径覆盖,一些命令会丢了,可选项)

    2、Download source of android;
        在Android目录下创建一个源码的保存目录,androidsrc。

         mkdir androidsrc

          cd fandroidsrc

         ../bin/repo init -u git://android.git.kernel.org/platform/manifest.git(默认master版本,此版本是开发测试用的,不稳定)

         或者获取cupcake 分支

         ../bin/repo init -u git://android.git.kernel.org/platform/manifest.git  –b cupcake

         (如果上面设定PATH的环境变量,直接使用repo init -u git://android.git.kernel.org/platform/manifest.git)
         进行设置完成后,开始同步代码(根据网络大概需要数小时或数日);

        ../bin/repo sync
        (如果上面设定PATH的环境变量,直接使用repo sync)

    三.系统和开发工具编译


       Android文件系统由于已经自带了经过优化的交叉编译工具,并且为所有的源码都提供了经过验证的makefile,所以系统的整体编译相对简单,官方发布的版本中基本功能都已经包含进了makefile中。如果需要增加什么功能,可以到build/target/product/修改相应的.mk文件。例如

    为了增加中文的输入法,可以按下面的方法做:

        #cd /home/myandroid/androidsrc/build/target/product/
        #gedit generic.mk
        打开这个文件后,在PRODUCT_PACKAGES中,加入PinyinIME,然后保存退出。这样在整体编译的时候就会把中文输入法也编译进system中了。

      开始系统编译:

        #cd /home/myandroid/androidsrc/

        #make
        第一次进行整体编译,这个过程大概持续2到3小时,默认情况下,会在/home/myandroid/androidsrc目录下生成一个out文件夹,所有的编译生成物都在这一目录下。如果想更改生成文件的目录,请参考./build/buildspec.mk.default文件中的说明和选项,很简单,相信大家都能看懂。这次编译所生成的主要是out/target/product/generic/下的一些物件,如system.img等

    2.开发工具的编译
        Android提供了完整的开发工具和交叉编译工具,这些都包含在了源码内,所以只要对源码正确编译,就可以获得丰富的开发工具,并且Android的移植工作也需要这些工具的支持。
        编译Android开发工具的步奏如下:
        #cd /home/myandroid/androidsrc/
        #make sdk

      这次编译主要生成物件在out/host/下

    #cd /out/host/linux-x86/sdk/
        可以看到这里有了一个名叫android-sdk_eng.root_linux-x86的文件夹,这个文件夹基本包含了Android的模拟器      和所有的开发调试工具。打开这个文件夹,可以看到这里主要由以下几部分组成:
        –add-ones –需要增加的新工具路径
        –docs –关于模拟器和各种开发工具的说明等
        –platform –模拟器和开发工具需要的文件
        –tools –模拟器和开发工具的应用程序

      四.模拟器使用

          进入~/android-sdk_eng.root_linux-x86/tools目录下,这里有很多Android的工具,其中模拟器对应的应用程序是emulator。下面是正确使用模拟器的步奏:
        #./android create avd –n NO1 –t 1
        这个命令会进入创建avd的过程,按自己的需要做出一些选择后,名称为NO1的avd就创建成功了,以后可以通过这 个创建的avd来使用模拟器。1.4之前的版本不需要这样创建,1.5版本后不正确创建是无法使用的。avd是android virtual machine的缩写。

        #./android list avd
        输入命令来检查创建是否成功,如果成功会列出来。
        #./emulator –avd NO1
        启动刚才创建的名为NO1的模拟器,使用的内核,文件系统等均使用默认的,即~/android-sdk_eng.root_linux- x86/platform/路径下的内核和文件系统。没什么问题的话,我们就可以看到Android操作系统的虚拟界面了。

       五. 文件系统提取

         Android可以运行在开发板上的文件系统的提取需要依靠模拟器,具体的操作步奏如下:

    1. 将模拟器运行在一个带SDcard的虚拟设备上
        #cd /home/myandroid/androidsrc/out/ android-sdk_eng.root_linux-x86/tools/
        #./mksdcard –l 200M /home/sdcard.img
        这里使用mksdcard开放工具在/home目录下建立一个200M的sdcard.img,用于模拟器中数据和外部数据的交互,虚拟SD卡的大小不应该小于100M,否则在后期的文件系统打包过程中,有可能会有SD卡存储空间不够的问题。


        #./android create avd –n cupcake –t –c /home/sdcard.img 1
        创建一个名为cupcake的,附带有sdcard的虚拟设备。


        #./emulator –avd cupcake –sysdir /home/myandroid/androidsrc/out/target/product/generic   –data  /home/myandroid/androidsrc/out/target/product/generic/userdata.img -ramdisk  /home/myandroid/androidsrc/out/target/product/generic/ramdisk.img –kernel /home/myandroid/androidsrc/prebuild/android-arm/kernel/kernel-qemu
        使用名为cupcake的虚拟设备启动模拟器,并规定系统,数据等的映象文件路径,模拟器内核采用prebuild/android-arm/kernel/kernel-qemu。当然也可以使用自己编译的内核镜像。

    2. 使用工具从运行的模拟器中获取文件系统,并放到sdcard中

        打开一个新的终端进行操作:
        #cd /home/myandroid/androidsrc/out/ android-sdk_eng.root_linux-x86/tools/
        #./adb remount
        这里使用adb工具的remount选项来使模拟器中的system目录权限改为可读写。
        #./adb push tar /system/bin
        这里使用adb工具的push指令将提前使用busybox做好的tar应用程序加入到模拟器的/system/bin目录下。关于busybox的使用这里不作介绍,可以自己看看网上的文章。


        #./adb shell
        这里使用adb工具进入到模拟器的shell中。


        进入到Android模拟器的shell中操作如下:
        #tar cvf /sdcard/system.tar /system
        #tar cvf /sdcard/userdata.tar /data


        这里使用前面加入到模拟器中的tar应用程序来对system和data目录下所有内容进行打包,并存储到sdcard里。操作结束后,进入sdcard目录下查看是否有了system.tar和userdata.tar文件,如果有,则证明打包成功。         
        #exit
        退出shell,并关闭模拟器。


        #mount –o loop sdcard.img /mnt
        #cd /mnt


        这里将虚拟SD卡挂载在/mnt目录下,进入/mnt目录后,就可以将system.tar和userdata.tar拷贝出来,文件系统的提取完成。

    经过测试,发现其实使用android提供的mkyaffsimage直接对/out/target/product/generic/system目录进行打包,制作出system.img也完全可以使用,不过不知道userdata.img如何制作,希望有人可能指点。使用mkyaffs2image制作文件系统映像时要注意的是一些配置文件的权限问题,比如/system/usr/keylayout下的文件权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。

    编译出错情况:

    frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in this scope的错误

    解决办法:
    下载gcc-4.3和g++-4.3
    apt-get install gcc-4.3 g++-4.3
    然后
    进入/usr/bin
    cd /usr/bin
    建个软连接
    ln -s gcc-4.3 gcc
    ln -s g++-4.3 g++
     

    注明:QQ技术交流群:108614806   感兴趣的加一下。

  • 相关阅读:
    Python函数式编程(一):高级函数
    Python高级特性:列表生成式
    Python高级特性:迭代
    Python高级特性:切片
    Python学习笔记
    关于相机拍照获取图片onActivityResult返回data 为null的问题
    191019
    状语和状语从句
    191018
    191017
  • 原文地址:https://www.cnblogs.com/zhiqiangsimida/p/2774647.html
Copyright © 2011-2022 走看看