Android 系统编译

34 篇文章 0 订阅
1. 系统环境
 Android 系统的编译环境目前只支持 Ubuntu(建议用最新版本14.03) 以及 Mac OS 两种操作系统。
2.下载Android源码
①Android源码使用Git进行管理,需要下载一些工具
工具下载:apt-get install git-core curl  
②创建源码下载目录
mkdir -p /develop/download-froyo(2.2)
③为便于源码下载需要下载repo脚本
curl http://git-repo.googlecode.com/files/repo-1.12 > ./repo
④修改脚本为可执行
chmod 777 repo
⑤初始化Git库
./repo init -u https://android.googlesource.com/platform/manifest.git -b froyo 
⑥下载:./repo sync
下载时间:如果是2.2(3G源码大概需要6、7个小时)
涨姿势:
①apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
apt-get install xxxx 安装   
apt-get remove xxxx 卸载但不删除配置  
apt-get purge xxxx 卸载并且删除相关配置 
② curl是利用URL语法在命令行方式下工作的文件传输工具。
下载时可能会出现失败的情况:需要多试几次,或者
apt-get update
apt-get install git-core curl --fix-missing
③配置软件源:
system-->administration--->synaptic package manager--->setting--->repositories-->software sources
Ubuntu 的软件源列表存放在 /etc/apt/sources.list 当中。 
④google的http://source.android.com/source/downloading.html,为了防止连接数过多,每个ip都需要认证。。。
第一步:从这里 the password generator(https://android.googlesource.com/new-password)  获取用户名和密码
第二步:将上面的页面上以machine开头的两行复制到  ~/.netrc文件中
第三步:repo init -u https://android.googlesource.com/a/platform/manifest  多了个“/a”
然后就可以repo sync了
⑤一点小提示:有时候google的android服务器老是断,总不能让我们守在电脑旁边一直手工重新./repo sync吧,这可是需要N个小时才能下载完的啊。
我们就写个小脚本让电脑自动reposync,直到下载成功为止:
#!/bin/shcount=0
ret=1
while [ $ret -ne 0 ]
do
repo syncret=$?
count=$(( $count + 1))
echo "try $count, ret:$ret"
done
echo "try $count, ret:$ret"
把上面的内容复制到一个文件里tryrepo.sh
然后修改tryrepo.sh的属性,开始自动工作吧。第二点早上应该就大功告成了
chmod a+x tryrepo.sh./tryrepo.sh
3. 编译源码
①部署JDK
不同的源码编译时需要的JDK版本不同,如2.2需要JDK5,2.3以上需要1.6
②辅助工具安装(C和C++)
③设置编译环境:. build/envsetup.sh 。该脚本的作用是初始化编译环境,并引入一些辅助的 Shell 函数,这其中就包括下一步使用 lunch 函数。
④选择编译目标:lunch(apt-get install python-lunch)
⑤编译:make -j4

4. Make命令
编译整个系统——make,耗时较长
编译SDK——make sdk
单个模块编译——make Media Provider,会将该模块依赖的所有模块也一起编译
编译某个目录下的模块——mm
编译某个目录下的指定模块——mmm

5.编译的结果输出
①所有的编译产物都位于 /out 目录下,该目录主要有以下几个子目录:
/out/host/:该目录下包含了针对主机的 Android 开发工具的产物。即 SDK 中的各种工具,例如:emulator,adb,aapt 等。
/out/target/common/:该目录下包含了针对设备的共通的编译产物,主要是 Java 应用代码和 Java 库。
/out/target/product/<product_name>/:包含了针对特定设备的编译结果以及平台相关的 C/C++ 库和二进制文件。<product_name>是具体目标设备的名称。
②Build 的产物中最重要的是三个镜像文件,位于 /out/target/product/<product_name>/ 目录下
ramdisk.img:在启动时将被 Linux 内核挂载为只读分区,它包含了 /init 文件和一些配置文件。它用来挂载其他系统镜像并启动 init 进程。
system.img:包含了 Android OS 的系统文件,库,可执行文件以及预置的应用程序,将被挂载为根分区。
userdata.img:将被挂载为 /data,包含了应用程序相关的数据以及和用户相关的数据。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值