本文从一个干净的Ubuntu 10.04 操作系统出发,一步一步引导你搭建自己的基于eclipse IDE 的Android源码开发环境。
    
    正文会包含一下这些内容:
  1. 获得源码
  2. 编译源码准备工作
  3. 编译工程
  4. 编译过程中出现的问题以及解决方案
  5. 如何配置Eclipse作为Android源码IDE
  6. 如何Debug Android源码?

获得源码

    1.安装repo
       $ mkdir ~/bin
            $ PATH=~/bin:$PATH
            $ curl http://android.git.kernel.org/repo > ~/bin/repo
            $ chmod a+x ~/bin/repo

       2.利用repo获得Android源码
            $ mkdir directory
            $ cd directory
            $ repo init -u git://android.git.kernel.org/platform/manifest.git
            $ repo sync

             注意:这里下载源码会很耗时,建议在睡觉前做,一觉醒来源码就应该下载完了。
            
编译源码准备工作

     1.下载JDK 6.0
         因为JDK6还没有在Ubuntu社区成为主流下载软件,所以需要添加额外的源下载。
         sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
         sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
         sudo apt-get update
         sudo apt-get install sun-java6-jdk

         2.安装编译源码需要的包

          $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
          
          $ sudo update-java-alternatives -s java-6-sun

编译工程

          $ cd ~/directory
          $ source build/envsetup.sh
          $ lunch
          $ make
---------------------------------------------------------------------------------
以上内容参考Android 官方文档:

编译过程中出现的问题以及解决方案

    64位机编译过程中会遇到以下问题:
    
   错误1:

  /usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory

  解决方案:

  sudo apt-get install libc6-dev-i386

  错误2:

  host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.a when searching for -lstdc++

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.a when searching for -lstdc++

  解决方案:

  sudo apt-get install g++-multilib

  错误3:

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libz.so when searching for -lz

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libz.a when searching for -lz

  /usr/bin/ld: skipping incompatible /usr/lib/libz.so when searching for -lz

  /usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz

  /usr/bin/ld: cannot find -lz

  解决方案:

  sudo apt-get install lib32z1-dev

  错误4:

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libncurses.so when searching for -lncurses

  /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../libncurses.a when searching for -lncurses

  /usr/bin/ld: skipping incompatible /usr/lib/libncurses.so when searching for -lncurses

  /usr/bin/ld: skipping incompatible /usr/lib/libncurses.a when searching for -lncurses

  /usr/bin/ld: cannot find -lncurses

  解决方案:

sudo apt-get install lib32ncurses5-dev

  错误5:

  In file included from external/qemu/android/skin/window.c:19:

  prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55:22: error: X11/Xlib.h: 没有那个文件或目录

  prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:56:23: error: X11/Xatom.h: 没有那个文件或目录

  解决方案:

  sudo apt-get install libx11-dev

等待编译结束。

如何配置Eclipse作为Android源码IDE

    1.下载Eclipse

      $sudo apt-get install eclipse

    2.配置Eclipse作为Android源码IDE流程

      拷贝development/ide/eclipse/.classpath到源代码根目录并修改.classpath 
       删除下面两行
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/>
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/>


        添加
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/>

    Eclipse中创建Java工程,将源码工程导入
    通过create file from existing source 导入Gingerbread源代码

如何Debug Android源码

    设置断点,在 Run->Debug Configurations->Remote java application上双击,然后,”Host:”设为 localhost,”Port:”设为8700,”Connection Type”为Standard(Socket Attach) 
然后“Apply”点击“Debug”,是不是看见一个提示框?Ok,开始你的源码开发之旅吧。

    需要注意的是,对源码进行修改后,需要:
   (以Settings.apk为例)
        1.重新编译
          
         $ make Settings
        
        2.重新打包映像文件

         $ make snod

        3.重启模拟器