-
本文为本人于
2012.11.17
原创,自由飞翔
Android
4.2
源码的下载和编译环境的安装及源码的编译
Google
于
2012.11.14
发布了
Android4.2
的源码,下面把本人在
ubuntu10.04
的
64
位
系统上下载源码,和编译
源码做个记录备份,也供有需要的人参考,若是在下载
编译安装
Android
源代码遇到问题,可加
QQ
群交流
: 217706590,
难免有错,敬请见
谅,还忘勿吝啬指出。
< br>源代码下载、编译环境安装、源代码编译和运行模拟器的可能出现的一些错误在本
文最后一章节,若出现类似错误,可以参考。
1
、
源码的下载
源代码的下载,首先需要安装以下软件:
curl
和
git-core
1.1
安装
curl
:
p>
在终端中执行:
sudo apt-
get install curl
1.2
安装
git-core
1.2
.
1
在用户目录下新建
bin
文件
在终端中执行:
mkdir ~/bin <
/p>
将
~/bin
添加环境变量,作用是:要
将
git
软件下载安装在此目录,在别的目录运行
可能会找不到此软件,所以要添加到环境变量中
在
终端中执行:
PA
TH=~/bin:$$PATH
1.2.2
安装
git-core <
/p>
在
终
端
中
执
行
:
curl
/dl/googlesource/git-
repo/repo§
>
~/bin/repo
给
repo<
/p>
执行权限:
chmod a+x ~/bin/repo
1.3
下载源代码
1.3
< br>.
1
进入要源代码将要保存的目录
如我的源代码保存在:、
/opt/android/src
在终端中执行:
cd /opt/android/src <
/p>
进入到
src
目录中
1.3.2
获取
repo
最新的配置
repo init -u
/platform/manifest§
若是执行错误则用以下命令:
~/bin/repo init -u
/platform/manifest§
1.3.3
下载源代码
对于下载不同版本的
android
,指定一个<
/p>
manifest
分支(即只指明
and
roid
对应的版
本文为本人于
2012.11.17
原创,自由飞翔<
/p>
本),使用
-b
参数
(
即下载某个版本的源代码
)<
/p>
,如:
对于
4
.2
的版本,将命令修改为
repo
init -u /platform/manifest§
-b
android-4.2_r1
若是执行错误则用以下命令:
~/bin/repo init -u
/platform/manifest§
-b android-4.2_r1 <
/p>
执行以上命令后,会在
/opt/android/src
目录中生成一个
.repo
的目录,此目录保
存了
将要下载的源代码的相关信息
同步获取源码
#~/bin/repo sync
如果中间出现中断,这个很正常,你可以再次输入
~/bin/repo
sync
命令来进行下
载。
根据网速的不同,下载时间也有快慢,最好在睡觉前或下班后
下载代码,由于源文
件比较大,一般国内都要
5
小时左右甚至更久。
若是出现以下信息,表示代码以下载完成:
Fetching projects: 100% (166/166),
done.
Syncing
work tree: 100% (165/165), done.
运行
~/bin/repo
sync
还可以重新校对下载的源码,若是有问题或遗漏了一些文件会
重
新下载,并从
.repo
目录中导出到实际源码中
注:此步可能会出现下载错误,请查看本文最后部分的说明
2
、
编译环
境的安装
首先若是没有修改源,请修改为国内的源,从而提高
软件的下载安装的速度
可以参考下面博客的内容添加一些速度
快的源,如:台湾源、
Ubuntu
官方上海源、
网
易、搜狐、
/houx
n22/item/48f0f7d150657c16d80e4468
安装编译所需的软件
1
、安装
jdk
sudo apt-get install sun-java6-jdk
2
、安装其它一些编译所需软件
在终端中执行:
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
本文为本人于
2012.11.17
原创,自由飞翔
libgl1-mesa-dev
g++-multilib mingw32 tofrodos python-markdown
libxml2-utils xsltproc
基本只要安装以上软件即可,官方网站上说的其它一些软件或者设置可以不用理
< br>会。
注:此步可能会出现错误,请查看本文最后部分的说明
3
、
编译源
代码
3.1
编译初始化:
在终端中执行:
source
build/
或:
.
build/
执行后输出:
source build/
including device/asus/grouper/
including device/asus/tilapia/
including device/generic/armv7-a-neon/
including device/generic/armv7-a/
including device/generic/mips/
including device/generic/x86/
including device/samsung/maguro/
including device/samsung/manta/
including device/samsung/toroplus/
including device/samsung/toro/
including device/ti/panda/
including sdk/bash_completion/
3.2
选择编译目标:
lunch full-eng
执行后会又以下信息提示:
====
========================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_V
ARIANT=armv7-a
本文为本人于
2012.11.17
原创,自由飞翔
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-2.6.32-45-generic-x
86_64-with-Ubuntu-10.04-lucid
HOST_BUILD_TYPE=release
BUILD_ID=JOP40C
OUT_DIR=out
=======================================
=====
3.3
编译代码:
在终端中执行:
make -j4
-j4
:表示用四个线程来编译:
编译根据不同机器的配置不同所需时间也有很大差异,如本人
电脑为
intel
i5-2300
四
核
2.8
,
2G
内存,晚上
8
点开始编译,将近凌晨
2
点才编译完成,所以编译源代
码也最好是在睡觉时或下班后进
行。
出现以下信息表示编译完成:
target
Java:
ContactsTests
(out/target/co
mmon/obj/APPS/ContactsTests_intermediates/classes)
target Dex: Contacts
Done!
Install:
out/target/product/generic/system/app/
Install:
out/target/product/generic/system/app/
Note: Some input files use or override
a deprecated API.
Note: Recompile with
-Xlint:deprecation for details.
Copying:
out/target/common/obj/APPS/Contacts_intermediates/
target
Package:
Contacts
(out/target/product
/generic/obj/APPS/Contacts_intermediates/)
'out/target/common/obj/APPS
/Contacts_intermediates/' as ''...
Processing target/product/generic/obj/A
PPS/Contacts_intermediates/
Done!
Install:
out/target/product/generic/system/app/
Install:
out/target/product/generic/system/app/
build/tools/
out/target/product/generic/obj/
out/target/product/generic/obj/
for
files
contained
in
the
filesystem
images in this
directory:
Combining NOTICE
files into HTML
Combining NOTICE files
into text
Installed file list:
out/target/product/generic/
Target
system
fs
image:
out/target/product/generic/obj/PACKAGIN
G/systemimage_intermediates/
本文为本人于
2012.11.17
原创,自由飞翔
Running:
mkyaffs2image
-f
out/target/product/generic/system
out/target/product/generic/obj/PACKAGING/sys temimage_intermediates/
Install system
fs image: out/target/product/generic/
DroidDoc took 5331 sec. to write docs
to out/target/common/docs/doc-comment-check
编译可能出现的错误,请查看本文最后部分的说明
4
、运行模拟器
在终端中执行:
emulator
运行模拟器可能出现的错误,请查看本文最后部分的说明
模拟器运行截图:
初始化:
本文为本人于
2012.11.17
原创,自由飞翔
开机后的待机界面:
本文为本人于
2012.11.17
原创,自由飞翔
待机二: