admin 管理员组

文章数量: 1087829


2024年4月29日发(作者:fedora14 iso下载)

Android4.1.4编译

1、下载源码:

我是在ics版本的基础上 通过repo sync更新,发现有了android 4_1_r1的分支,

等待更新完,repo branch 切换分支,然后. Build/ 然后lunch 1 选择

full-eng 最后make ,过一会报错。提示:

build/core/product_:193:

_TS.[[build/target/product/vbox_]]:

***

"frameworks/native/build/" does not exist.

Stop.

** Don't have a product spec for: 'full'

** Do you have the right repo manifest?

Google baidu bing了大半天终于在android的bug单中找到了这条bug,解答是

源码不全。愁了半天,repo sync 都是最新的,愁了半天,最后再ics的repo中重新下了

个android4.1.4的分支。

repo init -u /platform/manifest -b

android-4.1.1_r4

repo sync

下载3个小时,终于下载完成,本来下载源码需要很长时间5~10个小时,由于 再

ics的基础上下载,只需要把patch下载就行了(repo会自动完成)。兴奋啊,赶紧.

Build/

lunch 1 full-eng

警告:

/bin/bash:

prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androidea

bi-gcc: 无法执行二进制文件

/bin/bash:

prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androidea

bi-gcc: 无法执行二进制文件

/bin/bash:

prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androidea

bi-gcc: 无法执行二进制文件

先没管它,继续机制行

make clean

make -j8

过了几分钟提示错误:

host StaticLib: 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 linux

make: ***

[out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/libhost.a] 错误

1

host C: emulator-target-i386 <= external/qemu/cpus.c

host C: emulator-target-i386 <= external/qemu/arch_init.c

host C: emulator-target-i386 <= external/qemu/os-posix.c

host C: emulator-target-i386 <= external/qemu/oslib-posix.c

host C: emulator64-arm <= external/qemu/audio/audio.c

host C: emulator64-arm <= external/qemu/disas.c

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 linux

make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator64-

arm_intermediates/disas.o] Error 1

make: *** Waiting for

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 linux

make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator64-

arm_intermediates/audio/audio.o] Error 1

又陷入郁闷,google baidu了好半天,都没找到解决方案,不过找到了提示,就是

谷歌推荐使用64位的ubuntu 10.04 来编译,很多配置都是 基于64来的,所以 32位

系统编译会遇到很多问题。

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

浩大。找了半天实在找不到解决方案,只好去硬着头皮去下载了64位ubuntu,安装过程

如下:

下载64位ubuntu amd代表64位名称,

并非只使用amd处理器。把它放在F盘,并解压出其中Casper下的vmlinuz和

放到ISO同盘根目录

下载grub4dos 解压出和把它门都放在C盘

配置windows启动项,发现win7的c盘下找不到 原来win7启动配置跟

xp不一样,搜了下找到一下方法:

开始菜单->运行->输入CMD,命令提示符下如下操作:

bcdedit /create /d "GRUB4DOS" /application bootsector

命令结果应该会返回一个GUID,后面的命令用到这个GUID

bcdedit /set {GUID} device partition=C:

bcdedit /set {GUID} path

bcdedit /displayorder {GUID} /addlast

等安装完成之后可以使用bcdedit /delete {GUID}将GRUB4DOS的启动项删除,

GRUB4DOS启动项的GUID可使用bcdedit /v查看。

然后重启进入grub 然后选择 commandline进入命令行

依次root各个分区找到放iso的盘例如x

root(hd0,x) x=0,1,2,。。。

ls 查看是否有iso 记下 x。

找到iso后执行

kernel (hd0,x)/vmlinuz boot=casper

iso-scan/filename=/ local=zh_-8

initrd (hd0,x)/

boot

这样就启动了临时ubuntu,可以执行安装了,我选择在原来32位的ubuntu上覆

盖,这样有些配置不会丢失,文件也不会丢失,除非是系统原生的。

花了半个小时终于搞定。

然后开始下载64位的jdk,发现有新版本,就下了个1.7 然后修改~/.bashrc安装装

一些环境变量

JAVA_HOME=/soft/jdk1.7.0

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

#export PATH

export CLASSPATH

1. sudo apt-get install build-essential

2. sudo apt-get install make

3. sudo apt-get install gcc

4. sudo apt-get install g++

5. sudo apt-get install libc6-dev

6.

7. sudo apt-get install patch

8. sudo apt-get install texinfo

9. sudo apt-get install libncurses-dev

10.

11. sudo apt-get install git-core gnupg

12. sudo apt-get install flex bison gperf libsdl-dev libesd0-dev

libwxgtk2.6-dev zip curl

13. sudo apt-get install ncurses-dev

14. sudo apt-get install zlib1g-dev

15. sudo apt-get install valgrind

16. sudo apt-get install python

顺便也下载了最新版本eclipse 64位版本

一切都就绪了,开始编译,编到几分钟报错: javac 1.7版本冲突,只好又去下载了

jdk1.6 的64位版本,重新配置了下 ~/.bashrc java路径。然后开始继续编译。过了10

分钟郁闷的又报错了,提示:

error while loading shared libraries: .1: cannot open shared object file:

No such file or directory

找了好半天都没找到解决方案,明明看见了 systemroot/usr/lib/.1而且是个

链接,编译器非说找不到。重新编译了下toolchain也无法解决。终于看到相关信息,说

是64位库用32位的链接,aapt编译不过。查了相关资料快绝望时,找到一篇帖子,说

是少64位ubuntu要装一个库,赶紧 sudo apt-get install ia32-libs

终于搞定了,开始编译sdk,.

. build/

lunch sdk-eng

make -j8

终于可以了,整个过程可谓艰难!

用了6个小时终于编译完成了,最后make sdk生成 了sdk,从out/host中拷出

来,配置了adb 路径,终于ok了。


本文标签: 编译 找到 下载 完成 文件