最近根据看到的资料编译了一遍Android操作系统的源码,结果是成功的,但过程是曲折,首先要说的是前提条件,这个很重要,我开始就是因为没有满足前提条件而多走了许多弯路。 1、从http://source.获取最新的Android源码编译资料,这个不是下面编译必须用到的, 但确是所有有关Android操作系统源码的编译资料中较为准确的。
2、使用ubuntu linux 12.04 LTS,如果你要按照我写的尝试一下就选这个,这样可以节省你的时间;
3、安装相关软件包
- sudo apt-get install git-core
- sudo apt-get install gnupg
- sudo apt-get install flex
- sudo apt-get install bison
- sudo apt-get install gperf
- sudo apt-get install libsdl-dev
- sudo apt-get install libesd0-dev
- sudo apt-get install build-essential
- sudo apt-get install zip
- sudo apt-get install curl
- sudo apt-get install libncurses5-dev
- sudo apt-get install zlib1g-dev
在我写这篇文章时,上述安装都是成功的,但到您看到时是否成功就不敢保证了,因为有可能有些软件源 已经发生变化了,如果出现这种情况可以根据安装中出现的提示中的关键词上网上查查最新的解决方案,一般都 是更新软件源,下面是更新软件源的一般方法: 【备份软件源】 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (如果想恢复原来的软件源执行:sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list) 【编辑软件源】 sudo gedit /etc/apt/sources.list 将更新的软件源在文件尾部添加并保存退出 【更新软件源】 sudo apt-get update
4、安装java jdk (1)如果系统已经安装了jdk和jre最好先卸载掉;(apt-get remove jdk软件名) (2)更新jdk软件源 sudo add-apt-repository " deb http://us.archive./ubuntu/ hardy multiverse" sudo apt-get update (3)安装java jdk6 sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts sun-java6-jdk (4)安装java jdk5 sudo apt-get install sun-java5-jdk (5)修改javadoc的link
- cd /etc/alternatives
- sudo rm javadoc.1.gz
- sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
- sudo rm javadoc
- sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
5、设置环境变量 sudo gedit ~/.bashrc 在文件尾部添加
- JAVA_HOME=/usr/lib/jvm/java-6-sun
- JRE_HOME=${JAVA_HOME}/jre
- export ANDROID_JAVA_HOME=$JAVA_HOME
- export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
- export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
- export JRE_PATH=$JAVA_PATH
- export JAVA_HOME;
- export JRE_HOME;
- export CLASSPATH;
- HOME_LIB=~/bin/
- export PATH=${PATH}:${JAVA_PATH}:${JRE_PATH}:${HOME_BIN};
- #echo $PATH
执行:sudo source ~/.bashrc 建议:干到这里最好重启一下ubuntu。
6、安装编译工具 【先解决一个android官网下载不了的问题】 sudo gedit /etc/hosts 在文件尾部追加一句:74.125.237.1 dl-ssl.google.com
cd ~ mkdir bin 以下命令用http://source./source/downloading.html上的 curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo
7、安装gcc4.4
- sudo apt-get install gcc-4.4
- sudo apt-get install g++-4.4
- sudo apt-get install g++-4.4-multilib
- sudo rm -rf /usr/bin/gcc /usr/bin/g++
- sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
- sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
8、安装python sudo apt-get install python 9、下载Android源代码
- mkdir ~/work/android-cts-2.2_r8
- cd ~/work/android-cts-2.2_r8
- repo init -u https://android./platform/manifest -b android-cts-2.2_r8
- repo sync
这是一个漫长的过程,最好在个假期中进行。、
10、将源代码中有关java版本校验的信息注释掉 cd ~/work/android-cts-2.2_r8 gedit ./build/core/main.mk
- # Check for the correct version of java
- #java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
- #ifeq ($(strip $(java_version)),)
- #$(info ************************************************************)
- #$(info You are attempting to build with the incorrect version)
- #$(info of java.)
- #$(info $(space))
- #$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
- #$(info The correct version is: 1.5.)
- #$(info $(space))
- #$(info Please follow the machine setup instructions at)
- #$(info $(space)$(space)$(space)$(space)http://source./download)
- #$(info ************************************************************)
- #$(error stop)
- #endif
- # Check for the correct version of javac
- #javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
- #ifeq ($(strip $(javac_version)),)
- #$(info ************************************************************)
- #$(info You are attempting to build with the incorrect version)
- #$(info of javac.)
- #$(info $(space))
- #$(info Your version is: $(shell javac -version 2>&1 | head -n 1).)
- #$(info The correct version is: 1.5.)
- #$(info $(space))
- #$(info Please follow the machine setup instructions at)
- #$(info $(space)$(space)$(space)$(space)http://source./download)
- #$(info ************************************************************)
- #$(error stop)
- #endif
11、编译前的最后一次准备
- cd ~/work/android-cts-2.2_r8
- source ./build/envsetup.sh
- lunch full-eng
12、编译源代码 好了经过漫长的准备终于可以编译了。
- cd ~/work/android-cts-2.2_r8
- make
这个也是个漫长的过程,在假期中耐心等待吧。
13、运行编译察看结果 如果上面sudo gedit /etc/profile 编译成功的话我们就可以进行这一步用虚拟机看看结果了。 (1)到Android官网下载SDK,http://developer./sdk/index.html (2)将下载的SDK解压缩到主文件夹,并改名为android-sdk-linux。 (3)sudo gedit /etc/profile 将 export PATH="$PATH:~/android-sdk-linux/tools" 写入文件最后 (4)sudo gedit ~/.profile 将
- export PATH="$PATH:$HOME/work/android-cts-2.2_r8/out/host/linux-x86/bin"
- ANDROID_PRODUCT_OUT=$HOME/work/android-cts-2.2_r8/out/target/product/generic
- export ANDROID_PRODUCT_OUT
写入文件结尾。 (5)用android 命令打开Android SDK Manager界面,下载安装android2.2的SDK Platform。 (6)终于可以看结果了
- cd ~/work/android-cts-2.2_r8/out/target/product/generic
- emulator -image system.img -data userdata.img -ramdisk ramdisk.img
|