编译Android 2.3.1 源代码心得
终于编译Android 2.3.1 源代码通过了!这里介绍一下过程:
1. 在编译之前,先安装好以下的库:
sudo apt-get install bison
sudo apt-get install zlib1g-dev
sudo apt-get install lib64z1-dev
sudo apt-get install flex
sudo apt-get install libncurses5-dev
sudo apt-get install libx11-dev
sudo apt-get install gperf
以上可能不全,具体等编译的时候缺哪个库再去下就行了~~
2. 安装Java 6 JDK:
sudo apt-get install sun-java6-jdk
3. 下载Android 2.3.1 的源代码并解压;
4. make clean(在编译之前先make clean会很方便的!)
如果原先有out文件夹,那么 make clean 后就没了
5.make
这是一个非常非常非常漫长的过程,等吧~~~~
6. 如果成功,会生成一个out文件夹,里面有三个文件夹:host,target和temp。看名字就知道他们的作用了,host是在PC上运行的(如SDK,emulator等),target是在目标板上运行的~~
target里有 system.img 、userdata.img、ramdisk.img三个文件。另外在这个目录下还有一些文件夹,有一些是和这三个文件一样的,只不过是没有打包的。
附一段make编译成功的输出:
Target system fs image: out/target/product/sdkDemo/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/sdkDemo/system.img
Target ram disk: out/target/product/sdkDemo/ramdisk.img
Target userdata fs image: out/target/product/sdkDemo/userdata.img
Installed file list: out/target/product/sdkDemo/installed-files.txt
下面来启动我们编译好的Android SDK:
1. cd out/host/linux-x86/bin/
2. ./android
提示没有设置ANDROID_SWT,添加如下环境变量:
export ANDROID_SWT=/home/hutao/Android_project/gingerbread/out/host/linux-x86/framework/(注意:这是你自己的framework路径!)
再次 ./android,错误:
Error: Error parsing the sdk.
Error: /home/hutao/Android_project/gingerbread/out/host/linux-x86/platforms is missing.
Error: Unable to parse SDK content.
其实解决方法很简单,只要在相应路径下新建一个platforms文件夹即可;
再次 ./android,错误:
Error: Error parsing the sdk.
Error: /home/hutao/Android_project/gingerbread/out/host/linux-x86/platforms is missing.
Error: Unable to parse SDK content.
解决方法同上;
最后终于启动Android SDK啦!
3. 下载Android SDK target:
选择available packages,选择相应的Android SDK Platform以及API,点击Refresh,后面就开始下载了~~
4. 为Android SDK建立一个avd(android virtual disk):
在virtual devices里点“New”,填上Name和target,之后点Create AVD,这样就建好了一个avd
5. 在主界面中点start就启动emulator了,等比较长的时间后就可以看到效果了~~
3.
2../emulator,出现如下错误:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator
看来是我们没有创建device(avd),那就创建一个:
./android create avd --target 8 --name avd_mayq
提示没有sdk,那好吧,我们先make sdk: