总结

来源:互联网 发布:乌鲁木齐软件优化网站 编辑:程序博客网 时间:2024/05/12 16:24

经过若干天的折腾,终于,看到了自己编译的android系统了,现把过程这几天的编译心得写下来的,以做记录。这其中遇到了不少的困难,不过凭借着对linux的一点基础知识,还是一个一个的给解决了。首先要说的一点是的,做这个工作,对于互联网的依靠真的很大,编译的过程中遇到的困难,都是一点一点的在网上搜索,依靠前人的经验,才取得了最后的成功。在此,先谢过。

 

首先,下载android源码,这个过程说简单也不简单,说容易也不容易,完全是仁者见仁,智者见智的问题,在此就不多赘述了,不懂的可以上网搜repo的用法以及如何用repo下载android源码这个问题。

 

下载完成源代码之后,开始做准备工作,就是要安装一些必要的软件,详细我也记不得了,不过和网上讲到的一些是一样的,先说明一下,主机的编译环境是ubuntu 10.10 64BIT的,所需要的组件如下:gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev。

 

可以通过sudo apt-get install gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev来安装。

 

安装完了之后,就开始编译:

 

$make  -j2                          /*参数的意思是 双核CPU ,所以用 -j2 */

 

编译过程非常漫长,这是对于首次编译的人来说的,对于编译成功之后,再次编译的话就会节约好大一部份时间的。等待……

编译过程中可能还会提示缺少一些相关的组件,安装即可。经过这么一翻折腾,发现一个粗略的经验,就是当发现又缺少某一样组件的时候,sudo apt-get install *即可,比如提示找不到 libc (其实真正缺少的是libc6-dev-i386)这个组件,可以再启动一个命令行窗口(不建议在当前编译的窗口进行安装,这会覆盖掉当前的错误提示),输入

$sudo apt-get install lib

之后接着按[tab]键,系统会自动寻找合适的libc*来进行安装。

 

编译完成后在目录:/home/XXX/Android_Src/out/target/product/generic 下面会出现 system.img 、userdata.img、ramdisk.img三个文件,

至于这三个文件是什么可以告诉的是这就是最后的编译结果。当然,这是系统打包好了的,另外在这个目录下还有一些文件夹,有一些是和这三个文件一样的,只不过是没有打包的。关于这三个文件的详细解释可以参考下面这个网址:http://pccp.me/archives/39.html 讲的很详细的。

 

编译完成之后,看到的三个文件:system.img    userdata.img    ramdisk.img感兴趣的可以复制一份到保存的地方。

 

再接下来要做的是编译SDK,方法如下:

 

$make sdk

 

在这个过程当中遇到了一些网上找不到解决方法的困难,所以,这里才是这篇文章的重点。

 

在编译过程中出现错误信息包含以下内容:

 

usr/share/pc-bios/bios.bin   …………      tools/lib/pc-bios/bios.bin

usr/share/pc-bios/vgabios-cirrus.bin   …………     tools/lib/pc-bios/vgabios-cirrus.bin

 

说明在路径:~/Android_Src/out/host/linux-x86/usr/share下找不到pc-bios文件夹,并不是在本机系统目录/usr/share……下找不到该文件夹,本机系统这个目录下的确没有的。

解决方法为:

复制:~/Android_Src/prebuilt/common下的pc-bios文件夹到以下目录:~/Android_Src/out/host/linux-x86/usr/share即可解决,命令行输入:

$cp ~/Android_Src/prebuilt/common/pc-bios   ~/Android_Src/out/host/linux-x86/usr/share

 

 

 

在编译的过程中又出现如下提示:

 

……………………

Docs droiddoc: out/target/common/docs/online-sdk

htmlDir not a directory: out/target/common/docs/gen

DroidDoc took 105 sec. to write docs to out/target/common/docs/online-sdk

Package SDK: out/host/linux-x86/sdk/android-sdk_eng.neo_linux-x86.zip

sdk/build/tools.atree:134: couldn't locate source file: framework/ddmlib-tests.jar

sdk/build/tools.atree:135: couldn't locate source file: framework/ninepatch-tests.jar

sdk/build/tools.atree:136: couldn't locate source file: framework/common-tests.jar

sdk/build/tools.atree:138: couldn't locate source file: framework/sdkuilib-tests.jar

make: *** [out/host/linux-x86/sdk/android-sdk_eng.neo_linux-x86.zip] 错误 44

 

大概的意思在framework目录下找不到ddmlib-tests.jar     ninepath-tests.jar     common-tests.jar     sdkuilib-tests.jar这几个文件,有一点要说明的是这里的framework目录指的是:~/Android_Src/out/host/linux-x86/framework这个目录,你可以在这里找到以下几个文件common.jar     ddmlib.jar     ninepatch.jar     sdkuilib.jar,然后将它们分别复制一份,并重命名,命名的原则很简单,就是在原有的名字后面跟上-tests即可。

 

接下来继续编译,没有其他错误的话,命令行会出现以下提示:

Docs droiddoc: out/target/common/docs/online-sdk

htmlDir not a directory: out/target/common/docs/gen

DroidDoc took 90 sec. to write docs to out/target/common/docs/online-sdk

Package SDK: out/host/linux-x86/sdk/android-sdk_eng.neo_linux-x86.zip

xxx@xxx:~/Android_Src$ 

 

这说明sdk编译也已经完成。

 

接下来就是要测试编译好的android系统了。

 

这里要说明的是网上好多文章在解释编译过程的时候都要设置环境变量,我设置了几次貌似不起作用,没办法,只能手动启动模拟器了。模拟器所在路径为:~/Android_Src/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86(这里出现的xxx为用户名,每个电脑都不一样的),进入这个目录,会看到以android命名的文件,这就是模拟器,在这个目录里点鼠标右键,选 [在终端中打开 ](这是一个鼠标右键集成小程序,网上有下载的,或者在命令行下切换到些目录也行),在命令行窗口输入:./android     就会出现模拟器窗口了 

点new新建一个AVD,设置如下:

 

 

然后点[Create AVD]即可,点[start]会出现另一个对话框,默认不必修改,点[launch]启动即可。此时应该就会出现android模拟系统界面了。


原创粉丝点击