当前位置:文档之家› android4.1编译

android4.1编译

Android4.1.4 编译1、下载源码:我是在ics版本的基础上通过repo sync更新,发现有了an droid 4_1_r1的分支,等待更新完,repobranch切换分支,然后.Build/envsetup.she然后lunchi选择full-eng最后make,过一会报错。

提示:build/core/product_config.mk:193:***_nic.PRODUCTS.[[build/target/product/v box_x86.mk]]:"frameworks/native/build/phone-xhdpi-1024-dalvik-heap.mk" does not exist. Stop.** Don't have a product spec for:'full'** Do you have the right repo manifest?Google baidu bing 了大半天终于在an droid的bug单中找到了这条bug,解答是源码不全。

愁了半天,repo sync都是最新的,愁了半天,最后再ics的repo 中重新下了个android4.1.4的分支。

repoinit-uhttps:4.1.1_r4repo sync下载3个小时,终于下载完成,本来下载源码需要很长时间5〜10个小时,由于再ics的基础上下载,只需要把patch下载就行了(repo会自动完成)。

兴奋啊,赶紧.Build/envsetup.shlunch 1 full-eng/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi- 4.6/bin/arm-linux-androideabi-gcc: 无法执行二进制文件/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi- 4.6/bin/arm-linux-androideabi-gcc: 无法执行二进制文件/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi- 4.6/bin/arm-linux-androideabi-gcc: 无法执行二进制文件先没管它,继续机制行make clean make -j8 过了几分钟提示错误:hostStaticLib: libhost(out/host/linux- x86/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a)ERROR:prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux-ar only run on 64-bit linuxmake:***[out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a] 错误 1host C:emulator-target-i386 <= external/qemu/cpus.chost C:emulator-target-i386 <= external/qemu/arch_init.chost C:emulator-target-i386 <= external/qemu/os-posix.chost C:emulator-target-i386 <= external/qemu/oslib-posix.chost C:emulator64-arm <= external/qemu/audio/audio.chost C:emulator64-arm <= external/qemu/disas.cERROR:prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux- glibc2.7-4.6/bin/x86_64-linux-gcc only run on 64-bit linuxmake:*** [out/host/linux-x86/obj/EXECUTABLES/emulator64- arm_intermediates/disas.o] Error 1make:*** Waiting for unfinished jobs ...ERROR:prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux- glibc2.7-4.6/bin/x86_64-linux-gcc only run on 64-bit linuxmake:*** [out/host/linux-x86/obj/EXECUTABLES/emulator64-arm_intermediates/audio/audio.o] Error 1又陷入郁闷,googlebaidu 了好半天,都没找到解决方案,不过找到了提示,就是谷歌推荐使用64 位的ubuntu10.04 来编译,很多配置都是基于64来的,所以32位系统编译会遇到很多问题。

天啦,难道我要重装ubuntu ?软件,vim, java编译环境都需要重新配置,工程浩大。

找了半天实在找不到解决方案,只好去硬着头皮去下载了64 位ubuntu ,安装过程如下:下载64 位ubuntu-10.10-desktop-amd64.isoamd代表64位名称,并非只使用amd处理器。

把它放在F盘,并解压出其中Casper下的vmlinuz和initrd.gz放到ISO同盘根目录下载grub4dos解压出menu.lst和grldr.mgr把它门都放在C盘配置windows启动项,发现win7的c盘下找不到boot.ini原来win7启动配置跟xp 不一样,搜了下找到一下方法:开始菜单->运行->输入CMD,命令提示符下如下操作:bcdedit /create /d "GRUB4DOS" /application bootsector命令结果应该会返回一个GUID,后面的命令用到这个GUIDbcdedit /set {GUID} device partion=C:bcdedit /set {GUID} path \grldr.mbrbcdedit /displayorder {GUID} /addlast等安装完成之后可以使用bcdedit /delete {GUID}将GRUB4DOS勺启动项删除,GRUB4DOSo动项的GUID可使用bcdedit /v查看。

依次root 各个分区找到放iso 的盘例如xroot(hd0,x) x=0,1,2,。

ls 查看是否有iso 记下x。

找到iso 后执行kernel(hd0,x)/vmlinuzboot=casperiso-scan/filename=/ubuntu-10.10-desktop-amd64.isolocal=zh_CN.UTF-8initrd (hd0,x)/initrd.lzboot这样就启动了临时ubuntu,可以执行安装了,我选择在原来32位的ubuntu 上覆盖,这样有些配置不会丢失,文件也不会丢失,除非是系统原生的。

花了半个小时终于搞定。

然后开始下载64位的jdk,发现有新版本,就下了个1.7 然后修改~/.bashrc 安装装一些环境变量JAVA_HOME=/soft/jdk1.7.0PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib#export PATHexport CLASSPATH1. sudo apt-get install build-essential2. sudo apt-get install make3. sudo apt-get install gcc4. sudo apt-get install g++5. sudo apt-get install libc6-dev6.6. s udo apt-get install patch7. s udo apt-get install texinfo8. s udo apt-get install libncurses-dev10.11. sudo apt-get install git-core gnupg12. sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev zip curl13. sudo apt-get install ncurses-dev14. sudo apt-get install zlib1g-dev15. sudo apt-get install valgrind16. sudo apt-get install python顺便也下载了最新版本eclipse 64 位版本一切都就绪了,开始编译,编到几分钟报错:javac1.7 版本冲突,只好又去下载了jdk1.6 的64 位版本,重新配置了下~/.bashrcjava 路径。

然后开始继续编译。

过了10 分钟郁闷的又报错了,提示:error while loading shared libraries:libz.so.1: cannot open shared object file:No such file or directory找了好半天都没找到解决方案,明明看见了systemroot/usr/lib/libz.so.1 而且是个链接,编译器非说找不到。

重新编译了下toolchain 也无法解决。

终于看到相关信息,说是64位库用32位的链接,aapt 编译不过。

查了相关资料快绝望时,找到一篇帖子,说是少64 位ubuntu 要装一个库,赶紧sudo apt-get installia32-libs终于搞定了,开始编译sdk,.. build/envsetup.shlunch sdk-engmake -j8终于可以了,整个过程可谓艰难!用了6个小时终于编译完成了,最后makesdk生成了sdk,从out/host中拷出来,配置了adb路径,终于ok了。

相关主题