最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

android源代码下载和编译教程

IT圈 admin 66浏览 0评论

2024年2月19日发(作者:南门如冬)

Android源代码由两部分组成,其一是Android系统应用部分的代码,其次是Android所使用的内核代码,如果针对Google Nexus S来开发ROM,就需要下载三星的内核代码

Android 系统应用代码:

/platform/manifest

Android内核代码:

/kernel/

准备阶段:设置Linux编译环境(本人是Ubuntu 11.10 ,32位系统),一般你需要以下配置:

Python 2.5 -- 2.7.

GNU Make 3.81 -- 3.82,,

JDK 6 (for Gingerbread or newer); JDK 5( for Froyo or older).

Git 1.7 or newer.

1、安装一些必备的包。

Git是Linux Torvalds为了帮助管理Linux内核而开发的一个开放源码的分布式版本控制系统软件,它不同于SVN,CVS这样集中式的版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录,而git这样的分布式控制系统中,每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中 式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而收到影响?

因为Android是由kernel,Dalvik,Bionic,prebuild,build等多个Git项目组成,

所以Android项目编写了一个名为repo的python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。

$ sudo apt-get install git-core gnupg flex bison gperf build-essential

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs

x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown

libxml2-utils xsltproc

$ sudo apt-get install libx11-dev:i386

2、创建源代码目录

首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它加到PATH环境变量中:

$ mkdir ~/bin

$ PATH=~/bin:$PATH 或者 $export PATH=$PATH:~/bin

3、用curl下载repo脚本,并保存在~/bin/repo文件中:

$ curl /dl/googlesource/git-repo/repo > ~/bin/repo

为repo加上执行权限

$ chmod a+x ~/bin/repo

4、初始化版本库

首先建立一个目录,用来存放下载下来的东西

$mkdir MyAndroid

$cd MyAndroid

以后,执行如下命令

$ repo init -u /platform/manifest -b android-2.3.7_r1

我这里下载的是android2.3.7版本的,所用的参数是android-2.3.7_r1。由于最新的是

android-4.0.3_r1,所以使用上面即可下载2.3.7的源代码

注意:如果要是把所有的版本都下载下来,那时间是需要很久很久的,需要耐心等待,但是如果仅仅是下载某一个版本的话,还是很快就可以了。

最后,如果看到repo initialized in /MyAnroid的提示,说明本地的版本库已经初始化成功了(期间需要你填写姓名和Gmail地址)。

5、执行repo sync命令

$repo sync

如果出现如下的字样的话,说明下载完成了:

Syncing work tree:100%(168/168),done.

这个下载过程同样需要很久,少则几个小时,多则几天,依赖于网速。

6、编译Android系统应用的源代码

$cd ~/MyAndroid

这里的这个MyAndroid目录其实就是你下载后源代码所在的位置,查看该文件夹下的东西类似如下

|-- Makefile |-- bionic (bionic C库)

|-- bootable (启动引导相关代码)

|-- build (存放系统编译规则及generic等基础开发包配置)

|-- cts (Android兼容性测试套件标准)

|-- dalvik (dalvik JAVA虚拟机)

|-- development (应用程序开发相关)

|-- external (android使用的一些开源的模组)

|-- frameworks (核心框架——java及C++语言)

|-- hardware (主要保护硬解适配层HAL代码)

|-- out (编译完成后的代码输出与此目录)

|-- packages (应用程序包)

|-- prebuilt (x86和arm架构下预编译的一些资源)

|-- sdk (sdk及模拟器)

|-- system (文件系统库、应用及组件——C语言)

这时,如果直接执行make命令的话,会出现错误,这是因为在make(编译)之前,需要安装一些依赖包才能够正常编译,否则会出现各种各样的问题。

7、编译android 2.3.7系统源代码

首先,需要注意的是,下载后的源代码先不要编译,最好备份一下,然后再编译。不能直make。

(1)进入到你的bin目录下,清理编译过的文件,释放空间

$make installclean

$make clean

(2)用脚本初始化环境变量

$source build/

或者

$. build/

(3)选择版本号,执行lunch操作

这里我选择了 1。直接在emulator上跑。

(4)开始编译源代码

$make -j4

其中-j(n)表示用n核cpu编译,这样会更快速,可以用top命令查看cpu的个数

完成编译大约1个小时左右

8、以下是各种错误对应的解决办法:

编译过程中可能会遇到一些错误,把错误直接google,一般都能找到解决方法的。编译成功后,会在~/MyAndroid/目录下得到~/MyAndroid/out/target/product/generic。编译好的源代码会在out目录下生成两个img镜像文件,可以先执行$updatedb 创建数据库,用来方便查询所需的文件:

$locate

$locate

9、配置环境变量

在编译过程中,系统会自动为你设置好必要的环境变量的。

10、在模拟器上运行编译好的镜像文件

$ emulator

最后进入android桌面,就说明成功了。 但是上面的只是系统应用源码编译完成后,用google自带的模拟器来运行测试的,如果需要在Nexus S上的话,需要三星的内核编译,所以还需要其他的动作要进行。这个我还有做,所以等到以后再做总结。以上的总结主要来自网上,自己也做了一下修改。

2024年2月19日发(作者:南门如冬)

Android源代码由两部分组成,其一是Android系统应用部分的代码,其次是Android所使用的内核代码,如果针对Google Nexus S来开发ROM,就需要下载三星的内核代码

Android 系统应用代码:

/platform/manifest

Android内核代码:

/kernel/

准备阶段:设置Linux编译环境(本人是Ubuntu 11.10 ,32位系统),一般你需要以下配置:

Python 2.5 -- 2.7.

GNU Make 3.81 -- 3.82,,

JDK 6 (for Gingerbread or newer); JDK 5( for Froyo or older).

Git 1.7 or newer.

1、安装一些必备的包。

Git是Linux Torvalds为了帮助管理Linux内核而开发的一个开放源码的分布式版本控制系统软件,它不同于SVN,CVS这样集中式的版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录,而git这样的分布式控制系统中,每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中 式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而收到影响?

因为Android是由kernel,Dalvik,Bionic,prebuild,build等多个Git项目组成,

所以Android项目编写了一个名为repo的python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。

$ sudo apt-get install git-core gnupg flex bison gperf build-essential

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs

x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown

libxml2-utils xsltproc

$ sudo apt-get install libx11-dev:i386

2、创建源代码目录

首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它加到PATH环境变量中:

$ mkdir ~/bin

$ PATH=~/bin:$PATH 或者 $export PATH=$PATH:~/bin

3、用curl下载repo脚本,并保存在~/bin/repo文件中:

$ curl /dl/googlesource/git-repo/repo > ~/bin/repo

为repo加上执行权限

$ chmod a+x ~/bin/repo

4、初始化版本库

首先建立一个目录,用来存放下载下来的东西

$mkdir MyAndroid

$cd MyAndroid

以后,执行如下命令

$ repo init -u /platform/manifest -b android-2.3.7_r1

我这里下载的是android2.3.7版本的,所用的参数是android-2.3.7_r1。由于最新的是

android-4.0.3_r1,所以使用上面即可下载2.3.7的源代码

注意:如果要是把所有的版本都下载下来,那时间是需要很久很久的,需要耐心等待,但是如果仅仅是下载某一个版本的话,还是很快就可以了。

最后,如果看到repo initialized in /MyAnroid的提示,说明本地的版本库已经初始化成功了(期间需要你填写姓名和Gmail地址)。

5、执行repo sync命令

$repo sync

如果出现如下的字样的话,说明下载完成了:

Syncing work tree:100%(168/168),done.

这个下载过程同样需要很久,少则几个小时,多则几天,依赖于网速。

6、编译Android系统应用的源代码

$cd ~/MyAndroid

这里的这个MyAndroid目录其实就是你下载后源代码所在的位置,查看该文件夹下的东西类似如下

|-- Makefile |-- bionic (bionic C库)

|-- bootable (启动引导相关代码)

|-- build (存放系统编译规则及generic等基础开发包配置)

|-- cts (Android兼容性测试套件标准)

|-- dalvik (dalvik JAVA虚拟机)

|-- development (应用程序开发相关)

|-- external (android使用的一些开源的模组)

|-- frameworks (核心框架——java及C++语言)

|-- hardware (主要保护硬解适配层HAL代码)

|-- out (编译完成后的代码输出与此目录)

|-- packages (应用程序包)

|-- prebuilt (x86和arm架构下预编译的一些资源)

|-- sdk (sdk及模拟器)

|-- system (文件系统库、应用及组件——C语言)

这时,如果直接执行make命令的话,会出现错误,这是因为在make(编译)之前,需要安装一些依赖包才能够正常编译,否则会出现各种各样的问题。

7、编译android 2.3.7系统源代码

首先,需要注意的是,下载后的源代码先不要编译,最好备份一下,然后再编译。不能直make。

(1)进入到你的bin目录下,清理编译过的文件,释放空间

$make installclean

$make clean

(2)用脚本初始化环境变量

$source build/

或者

$. build/

(3)选择版本号,执行lunch操作

这里我选择了 1。直接在emulator上跑。

(4)开始编译源代码

$make -j4

其中-j(n)表示用n核cpu编译,这样会更快速,可以用top命令查看cpu的个数

完成编译大约1个小时左右

8、以下是各种错误对应的解决办法:

编译过程中可能会遇到一些错误,把错误直接google,一般都能找到解决方法的。编译成功后,会在~/MyAndroid/目录下得到~/MyAndroid/out/target/product/generic。编译好的源代码会在out目录下生成两个img镜像文件,可以先执行$updatedb 创建数据库,用来方便查询所需的文件:

$locate

$locate

9、配置环境变量

在编译过程中,系统会自动为你设置好必要的环境变量的。

10、在模拟器上运行编译好的镜像文件

$ emulator

最后进入android桌面,就说明成功了。 但是上面的只是系统应用源码编译完成后,用google自带的模拟器来运行测试的,如果需要在Nexus S上的话,需要三星的内核编译,所以还需要其他的动作要进行。这个我还有做,所以等到以后再做总结。以上的总结主要来自网上,自己也做了一下修改。

发布评论

评论列表 (0)

  1. 暂无评论