`
saybody
  • 浏览: 904336 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

在Ubuntu7.10上编译android

阅读更多

1 概述

上个星期看到android开放源代码的消息,虽然觉得Google的这个动作会对业界产生很大影响,但没有时间仔细看,只浏览了 Project layout。今天上午一个网友在mail中说已经编译、运行过android。我趁着中午休息时间,在一个Ubuntu7.10的虚拟机上编译、运行了一下。

我在这个虚拟机上编译过openmoko、poky。相对于这两个使用OpenEmbedded的平台,android的编译要简单一些,快一些。我在编译openmoko和poky时,将所有下载包都保存在一个目录中,将编译目录的sources子目录指向这个目录。这样做,一方面即使以后有些链接失效,也还可以编起来(其实编译时都不需要连接外网);另一方面在重新编译时,不用重新下载,可以加快编译速度。即使这样,完全编译一次poky也要一个晚上。编译android时,下载用了1个小时,编译也只需要1个小时。

2 编译中的两个小问题

2.1 python和JDK

Google网站对编译过程的介绍还是很清晰的。不过在介绍其它软件包时,都给出了apt-get命令,却单独给出了python和JDK的链接地址,容易对读者产生误导,以为要手工安装这两个软件。其实这两个软件也应该通过apt-get安装。特别是python,如果从源代码安装,可能因为依赖其它软件,导致一些组件编译失败,影响android的编译。而且python 2.6的源代码包没有提供make uninstall,卸载比较麻烦。其实我们只需要一个apt-get命令,就可以安装所有依赖的软件。

2.2 "fatal: git 1.5.4 or later required"

在Ubuntu7.10上执行repo init时,会出现"fatal: git 1.5.4 or later required"的错误提示。在Ubuntu8.04上编译没有这个问题。下面的流程里会介绍怎样解决这个问题。

3 在Ubuntu7.10上的编译流程

3.1 安装依赖的软件

执行

sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl python sun-java5-jdk valgrind

3.2 安装脚本repo

cd ~
mkdir bin
export PATH=$PATH:~/bin
curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo

将repo所在目录加到PATH后就可以在其它目录直接执行。


3.3 初始化代码仓库

我把/ui/mydroid作为工作目录,创建目录后在这个目录执行:

repo init -u git://android.git.kernel.org/platform/manifest.git

如果返回"fatal: git 1.5.4 or later required",就执行3.4。否则执行3.5。

3.4 “fatal: git 1.5.4 or later required”的解决

3.4.1 删除git-core,添加apt源

首先执行

sudo apt-get remove git-core

再编辑apt的源文件

sudo vi /etc/apt/sources.list

在最后添加

deb http://www.backports.org/debian/ etch-backports  main
deb-src http://www.backports.org/debian/ etch-backports  main

然后执行

sudo apt-get update

更新源。这时如果出现没有公钥的错误提示:“由于没有公钥,下列签名无法进行验证: NO_PUBKEY EA8E8B2116BA136C”,就执行3.4.2。否则执行3.4.3。

3.4.2 安装公钥

执行gpg命令下载公钥:

sudo gpg --keyserver wwwkeys.pgp.net --recv-keys EA8E8B2116BA136C
sudo gpg --export -a EA8E8B2116BA136C > /tmp/key

添加公钥:

sudo apt-key add /tmp/key

3.4.3 更新git-core

执行:

sudo apt-get update
sudo apt-get install debian-backports-keyring
sudo apt-get update
sudo apt-get -t etch-backports install git-core

然后再执行:

repo init -u git://android.git.kernel.org/platform/manifest.git

应该就可以了。

3.5 下载代码

执行

repo sync

下载代码。我从13:30执行这条命令,14:30完成下载。

3.6 编译

执行

make

编译。我从14:30开始编译,15:40左右完成。编译的最后输出是:

Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img

4 执行

可以用模拟器运行一下刚才编译的映像。从网上下载一个android-sdk-linux_x86-1.0_r1.zip,我将其放到~/android目录解压。在路径中增加sdk的tools目录:

export PATH=${PATH}:~/android/android-sdk-linux_x86-1.0_r1/tools

通过环境变量告诉模拟器映像所在的目录:

export ANDROID_PRODUCT_OUT=/ui/mydroid/out/target/product/generic

最后执行:

emulator

就可以了。可以用-skin参数选择皮肤。sdk的tools/lib/images/skins目录中是sdk自带的皮肤。下面是两个运行的截图:

  

相对于android的java框架,我更喜欢GTK和C。但不得不承认android的UI比openmoko做得强多了。

5 结束语

可以在~/.bashrc的最后添加:

export PATH=${PATH}:~/bin:~/android/android-sdk-linux_x86-1.0_r1/tools
export ANDROID_PRODUCT_OUT=/ui/mydroid/out/target/product/generic

自动设置编译、运行环境。

这两天晚上正在改gsmd的中文短信bug,没时间仔细看android的编译系统,感觉上应该比OpenEmbedded简单。其实OpenEmbedded用习惯了也不错,就是不够精简,速度慢一些,占用空间大一些。编译android的工作目录有3.5个G。我编译poky的目录有10.59个G,编译openmoko的目录有11.6个G。

分享到:
评论

相关推荐

    在Ubuntu上编译android.pdf

    以下是在Ubuntu 7.10上编译Android的详细过程和注意事项: 1. **概述** 编译Android源代码对于开发者来说是一项基础任务,尤其是对于想要自定义或优化Android系统的人员。在Ubuntu 7.10环境下,相比于其他基于Open...

    在Ubuntu上编译android借鉴.pdf

    整个编译流程虽然繁琐,但遵循这些步骤,即使是新手也能在Ubuntu上成功编译Android。这个过程不仅锻炼了Linux操作技能,也加深了对Android源码结构和编译机制的理解。对于想要深入Android系统开发的开发者而言,这是...

    硬盘安装Ubuntu 7.10

    通过以上内容可以看出,Ubuntu 7.10不仅在桌面环境、图形配置工具等方面进行了优化,还引入了许多实用的新功能,如快速用户切换、动态屏幕配置等,大大提升了用户体验。同时,硬盘安装和升级过程也被设计得更为简便...

    ubuntu下编译

    以下是在Ubuntu 7.10(Gutsy Gibbon)上编译Android的主要步骤和注意事项: 1. **概述**: Android开源项目发布后,用户可以在Ubuntu 7.10这样的Linux发行版上自行编译系统。相比于使用OpenEmbedded的openmoko和...

    ubuntu 7.10安装配置教程

    嵌入式开发-ubuntu 7.10安装配置教程

    Ubuntu 7.10安装教程

    ### Ubuntu 7.10 安装教程知识点详解 #### 一、准备工作 **1.1 下载镜像** - **推荐版本**:强烈建议下载 I386 版本的镜像,以获得更好的软件支持。 - **官方下载地址**:通过官方网站提供的链接 `...

    虚拟机中 为 ubuntu7.10 安装 VMware-Tools

    在虚拟机环境中,为了提升Ubuntu 7.10(代号Gutsy Gibbon)的性能、稳定性和用户体验,安装VMware-Tools是一项至关重要的步骤。以下是对标题、描述及部分给定内容中所涉及的知识点的详细阐述: ### 虚拟机中为...

    ubuntu7.10硬盘安装引导文件

    可以硬盘安装ubuntu7.10的引导文件,压缩包中包括了vmlinuz和initrd.gz,注意只能用来安装alternate,不适用于desktop,经本人试验可以成功安装ubuntu7.10和ubuntustudio7.10,其他衍生版估计也可以

    Ubuntu7.10LinuxUnleashed.pdf 英文原版

    Ubuntu 7.10 Linux Unleashed

    ubuntu 7.10安装及基本设置

    ubuntu 7.10安装及基本设置 博文链接:https://mqzsweet.iteye.com/blog/149848

    硬盘安装Ubuntu7.10.chm

    硬盘安装Ubuntu7.10.chm硬盘安装Ubuntu7.10.chm硬盘安装Ubuntu7.10.chm硬盘安装Ubuntu7.10.chm硬盘安装Ubuntu7.10.chm硬盘安装Ubuntu7.10.chm

    Ubuntu 7.10 Linux 揭秘.pdf

    Ubuntu 7.10 Linux 揭秘,学习Ubuntu 7.10 Linux的好资料

    使用Vmware将Ubuntu7.10安装在物理硬盘上

    ### 使用Vmware将Ubuntu 7.10安装在物理硬盘上的详细步骤 #### 一、引言 在没有光驱的情况下安装Linux系统可能会遇到一定的困难,尤其是对于新手来说更是如此。传统的安装方法往往需要借助光驱来完成系统的安装,...

    Ubuntu7.10 vivim搭建超级cc++编程环境

    Ubuntu 7.10 vivim 搭建超级 C/C++ 编程环境 以下是根据提供的文件信息生成的相关知识点: 标题:Ubuntu 7.10 vivim 搭建超级 C/C++ 编程环境 描述:使用 Ubuntu 7.10 和 vi/vim 搭建超级 C/C++ 编程环境,讨论了...

    ubuntu server7.10 建立DNS服务器

    首先,让我们详细了解一下如何在Ubuntu Server 7.10上建立DNS服务器。安装BIND9可以通过运行`sudo apt-get install bind9`命令来完成。安装完成后,我们需要配置主配置文件`/etc/bind/named.conf`以及区域数据文件。...

Global site tag (gtag.js) - Google Analytics