|||
1.获取源代码。
1)安装git:
$sudo apt-get install git-core 或 git
2)获取repo:
$wget http://android.git.kernel.org/repo >~/repo
3)下载源码:
$repo init -u git://git.android-x86.org/platform/manifest.git -b donut-x86
$repo sync
2. 编译环境建立
1)安装sun-java-jd。
sudo apt-get install sun-java6-jdk
2)其他的开发库和环境
# sudo apt-get install flex bison zlib1g-dev gperf libncurses5-dev
# sudo apt-get install zip genisoimage
# sudo apt-get install g++-multilib
# sudo apt-get install lib32z1-dev或者apt-get install lib64z1-dev
要解决gnu/stubs-64.h: No such file or directory,需:
apt-get install libc6-dev-amd64
要解决/usr/bin/ld: cannot find -lstdc++,需:
apt-get install g++-multilib lib64stdc++6
要解决/usr/bin/ld: cannot find -lz,需
apt-get install lib64z1-dev
要解决/usr/bin/ld: cannot find -lncurses需
sudo apt-get install libncurses5-dev
记得
sudo ldconfig
如果已经安装这些库,那可能是因为这次库不是以so结尾的,创建一个so结尾的连接即可。
错误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
3.编译系统,生成iso镜像
$make iso_img TARGET_PRODUCT=eeepc
$make iso_img TARGET_PRODUCT=eeepc TARGET_CPU_ABI=x86 TARGET_ARCH=x86
如果已经编译过,可以直接生成ISO:
genisoimage -vJURT -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-input-charset utf-8 -V "Android LiveCD" -o out/target/product/eeepc/eeepc.iso out/target/product/eeepc/boot out/target/product/eeepc/system.img out/target/product/eeepc/ramdisk.img out/target/product/eeepc/initrd.img out/target/product/eeepc/install.img out/target/product/eeepc/kernel
在虚拟机中安装SD CARD
首先系统已经安装在虚拟机中。
然后通过光盘启动系统。
然后加载虚拟机系统的磁盘。
建个文件夹用来加载
$ mkdir /dev/sda1
$ mount -o rw -t ext2 /dev/block/sda1 /dev/sda1
$ cd /dev/sda1
$ vi ./grub/menu.list
然后 加入 SDCARD=/android/sdcard
可以修改init.rc文件中:
root/init.rc:
mount rootfs rootfs / ro remount system
eeepc/init.rc:
mount ext2 /dev/block/loop0 /system
mount ext2 /dev/block/loop0 /system ro remount system
安装成功之后:
adb connect 192.168.56.101:5555
adb shell
mount -o rw -t ext2 /dev/block/loop0 /system
问题:Ubuntu 升级为 9.10, 后 Android 源码无法编译通过怎么办?
原因:
这是 gcc 和 g++ 的版本太高导致的问题。Ubuntu 9.04 是4.3, 而 9.10 是4.4.
GCC 在 4.4 时把部份 string 相关的 function 回传值的 type 改变了...
char* 改成了 const char*...
也因此让一堆原本不是针对最新的gcc来写的code都无法编译成功。
解决方案:
先下载 gcc-4.3 g++-4.3
apt-get install gcc-4.3 g++-4.3
删除原有的连接
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
添加新的连接
sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++
问题:
Ubuntu 中没有 Android 要求的 jdk 1.5, 怎么办?
解决方案一:
安装 jdk 1.5。
方法1:从官方网站上下载 jdk 1.5,安装。
方法2:在 /etc/apt/sources.list 中添加 9.04 的源:
deb http://mirrors.163.com/ubuntu/ jaunty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jaunty-updates main restricted universe multiverse
更新源,安装 jdk 1.5。
解决方案二:
已经安装了jdk 1.6,修改 <src_home>/build/core/make.mk。(注,如果是2.0版本,修改 <src_home>/build/core/main.mk)
在文件中搜索并分别把:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')
改为
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
如果你有其它的开发要使用 jdk 1.6 的话,采用解决方案二是一种不错的选择,它可以避免你在两个 jdk 之间切换。
如果需要 make sdk,则需要把 javadoc 设置为 1.5 的。
安装 javadoc 1.5版本,然后 sudo update-alternatives --config javadoc,选择 1.5 版本。
不然会出现以下错误:
javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException
com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件
1 错误
make: *** [out/target/common/docs/services-timestamp] 错误 45
====================
补充:常见问题解决方案
====================
1.找不到PRODUCT_POLICY
frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).
解法: 修改build/tools/findleaves.sh的89行:
#find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |
find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |
2. fprintf未定义
frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in
this scope
解法:apt-get install gcc-4.3 g++-4.3,并重新ln gcc 和g++到 gcc-4.3 和g++-4.3
3.安装sun- java6-jdk,并且在环境变量中设置:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/
export ANDROID_JAVA_HOME=$JAVA_HOME
这部分摘自:http://embeddeder.spaces.live.com/Blog/cns!8006E36532087D51!213.entry
附后:(from http://forum.xda-developers.com/archive/index.php/t-633274.html)
I notice that there is quiet a few people around that are having issues building the source, due to the lack on Sun-Java5 (1.5 JDK) in the Ubuntu Repositories.
In a hope it will encourage more developers, I'll post the following, which will build a full eclair system, on a new Ubuntu 9.10 x64 system.
$ mkdir ~/mydroid
$ mkdir mydroid/java5-packages
$ cd ~mydroid/java5-packages
$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb
$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb
$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb
$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb
$ 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 java-common unixodbc
$ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb
$ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb
$ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb
$ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb
$ sudo update-java-alternatives -s java-1.5.0-sun
$ cd ..
$ wget http://android.git.kernel.org/repo
$ sudo mv repo /usr/bin/
$ chmod a+x /usr/bin/repo
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair
$ rep sync
$ cd external/webkit/
$ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa
$ cd ../../
$ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?
$ cd vendor/htc/sapphire-open/
$ ./unzip-files.sh
$ cd ../../../
$ . build/envsetup.sh
$ lunch aosp_sapphire_us-eng
$ make
Powered by Discuz! X1
© 2001-2010 Comsenz Inc.