2013年(9)
分类: LINUX
2013-03-17 19:55:54
原文地址:[转]Android 系统编译安装 作者:laoyouji
下了Android系统源码很久一直没时间编译,搞了一个下午,果然很麻烦。
一,下载源码
看官方教程吧。我之前也分享过一份源码。真的要下很久。
二,编译
官方教程。
主要说下我遇到的问题
首先是环境,我的是i52430 4G内存,LinuxMin 12 64位(其实就是 Ubuntu11.10)。Android2.3以上官方建议在64位的Linux上编译,当然32位上有解决的方法。另外JDK版本需要为1.6。
下面是别人总结的,刚好我都遇到了==总结下
1.出现多次权限不够
/bin/bash:prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc:权限不够
/bin/bash:/usr/meizu/Android/out/host/linux-x86/bin/bison: 权限不够
/bin/bash:build/core/find-jdk-tools-jar.sh: 权限不够
解决:
增加权限便可。
Chmoda+xprebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc
chmoda+x /usr/meizu/Android/out/host/linux-x86/bin/bison
2bison flex …..找不到命令.
/bin/bash:bison:找不到命令
bits/predefs.h:No such file or directory
一堆找不到命令,或者什么没有该目录,bits/predefs.h:No such file or directory 这个错误有人说是g++gcc版本过高,要从4.6降到4.4,可是我将完还是不行,搜索了半天才发现,其实就是有些依赖没解决,我找到的依赖项有下面这些:
bison
flex g++-multilib gcc-multilib gperf ia32-libs-dev lib32ncurses5-dev lib32z1-dev libc6-dev-i386 libx11-dev mesa-common-dev 直接用apt-get install 全部装上...
3.pkg被中断,您必须手工运行sudodpkg
–configure -a 执行sudodpkg
–configure -a 解决此问题
4,arm-eabi-gcc:error
trying to exec 'cc1': execvp: No such file ordirectory”这样的错误
chmod-R 777 *
还有其它很多问题Android目前这么热门,基本上你遇到的问题别人已经遇到过了,所以基本上遇到问题晚上搜索下应该几给找到答案了。。关于搜索,建议用google或者直接用英文搜索,上面那个问题搜索“bits/predefs.h:没有该目录或文件”,就几个网页,但是搜索“bits/predefs.h:No such file or directory ”
就可以看到一堆答案了。看来还是国外比较活跃啊==
三,安装使用编译好系统
推荐杨丰盛老师的《Android技术内幕》系统卷。第一章准备工作这部分讲得很清楚。
所有的编译工作应该包含下面几部分
1编译Android系统就是我们刚刚做的。
2编译Linux内核,直接make是不会编译Linux内核的
3编译SDK就是我们开发应用时从谷歌官网下载的那个个差不多,包含了很多开发应用的工具。
4编译ADT也就是Eclipse的开发插件。
5单独编译Adnroid系统中的模块。
具体编译过程请参见上面推荐的那本书,其过程也是非常蛋疼的。
简单说下怎样使用我们自己编译的系统。
执行完1,3即编译完Android系统和SDK后,所有生成的东西会在源码跟目录下的out目录
out/target/product/generic/下就是系统的镜像 有system.imgramdisk.img userdata.img sdcard.img等重要的文件。
进入out/host/linux-x86/sdk/android-sdk_eng.water_linux-x86目录(注意这里的文件名是自动生成的,android-sdk_eng.你的主机名)/tools目录下
执行以下命令
./mksdcard512M sdcard.img建立内存卡
./androidcreate avd –target 1 –name HelloAndroid –sdcard sdcard.img建立虚拟主机
--target指定target–name指定名字 –sdcard指定sd卡文件
./emulator -system /home/water/mydroid/out/target/product/gene
ric/system.img -data /home/water/mydroid/out/target/product/generic/userdata.img -ramdisk /home/water/mydroid/out/target/product/generic/ramdisk.img
指定编译好的system.imgramdisk.img的文件。