Android 4.4源码编译过程

Android源码下载完后的目录如下:

整个代码的大小为:25.559GB。

一、构建系统

如下用于构建Android源码树的指令应用于所有的代码分支,包括master分支。

1.选择分支

构建系统的一些要求是由将要选择编译的源代码的版本决定的。通过网址http://source.android.com/source/build-numbers.html来查看当前Android所有的分支列表。可以选择下载和构建最新的源代码(称为“master”),在这种情况下,当初始化库时,可直接省去了指定分支参数。

一旦选择好了分支,按照如下的命令来建立构建系统。基本的构建命令序列如下:

2.初始化

使用envsetup.sh脚本来初始化环境,注意可以用“.”字符来代替source。如下:

[plain] view plaincopy

  1. $source build/envsetup.sh

[plain] view plaincopy

  1. $ . build/envsetup.sh

且后一种简短格式在文件中使用的更加频繁。

3.选择目标

使用lunch命令来选择哪一种目标来构建。确切的配置可以作为参数传递给命令,如下:

[plain] view plaincopy

  1. $lunch aosp_arm-eng

以上的例子指定了构建一个完成的模拟器,其所有的debugging使能,输入该命令后,

若lunch后面没有参数,那么会通过一个目录来让提示让你选择。如下:

所有的构建目标是使用BUILD-BUILDTYPE形式,其中BUILD是代码名表示特定的特征结合,如下是部分列表:

而BUILDTYPE如下:

更好的关于构建和运行在实际硬件上的信息,参考:http://source.android.com/source/building-devices.html

4. 构建代码

使用make构建一切,GNU make可以通过使用-jN参数来处理并行任务。此处的N,根据所用的计算机的硬件的核数来指定,一般N指定为CPU核心的1到2倍。例如在一个dual-5520机器上(2个CPU,每个CPU4个核,每个核2个线程),那么最快的构建是使用make -j16或make -j32。

[plain] view plaincopy

  1. $make -j4

5.运行

可以在模拟器上运行构建的Android系统,可以flash到设备上,请注意已经使用lunch命令构建的目标。最好不要把构建的目标运行另一个不同的目标上。

1)模拟一个android设备

编译完成后,先设置环境变量,在ete/profile中加入如下变量:

然后,敲入如下命令来运行模拟器:

[plain] view plaincopy

  1. $emulator

2)Flash到设备上

为了Flash到设备上,需要使用fastboot,成功构建后,该命令包含在你的路径中。在引导时,要么通过适当的组合键手动放置设备到fastboot模式。或者从shell中输入如下命令进入fastboot模式

[plain] view plaincopy

  1. $adb reboot bootloader

一旦设备处于fastboot模式,运行:

[plain] view plaincopy

  1. $fastboot flashall -w

-w选项用于擦去设备上的/data部分,对于第一次flash一个特定设备这是有用的,否则不是必需的。

更多的关于在实际硬件上构建和运行的信息,见:http://source.android.com/source/building-devices.html

二、使用ccache

ccache是一个编译器ccache用于C和C++。可以让构建更加快速。在源代码的根目录处,做如下操作:

[plain] view plaincopy

  1. $export USE_CCACHE=1
  2. $export CCACHE_DIR=/<path_of_your_choice>/.ccache
  3. $prebuilts/misc/linux-x86/ccache/ccache -M 50G

建议的cache大小为50-100G

可以使用如下操作来查看使用的ccache大小

[plain] view plaincopy

  1. $watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s

若使用Ice Cream Sandwich(4.0.x)或更老的版本,需要用prebuilts来代替prebuilts/misc

运行过程中存在的问题:

问题:qemu: could not load initrd ‘ramdisk.img‘

解决方法:

进入ramdisk.img所在的目录(~/my_android/out/target/product/generic/),运行如下命令

[plain] view plaincopy

  1. chmod 777 -R *

且在运行emulator时,加入全路径名,即可,如下:

[plain] view plaincopy

  1. emulator -kernel /my_android/prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -sysdir /my_android/out/target/product/generic/ -system system.img -data userdata.img -ramdisk /my_android/out/target/product/generic/ramdisk.img -skindir skins/ -skin HVGA -partition-size 768

其中skins是从SDK目录中复制过来的。

Android 4.4源码编译过程

时间: 2024-10-08 03:35:57

Android 4.4源码编译过程的相关文章

Android介绍以及源码编译---Ubuntu安装

二. Ubuntu安装和设置 2.1 原料 VMware Workstation 11 Ubuntu 14.04 x64位 iso镜像文件 Android4.1源码(Jelly Bean) 2.2  安装和设置 选择Ubuntu安装镜像:(Android2.3之后的版本,必须使用64位系统编译) 创建账户: 选择CPU以及核心数量(涉及后面的源码编译): 分配虚拟机内存,建议最低4GB,编译Android系统较耗内存: 硬盘空间分配至少40G以上.源码解压20G左右,编译完成后占用40G以上空间

Android介绍以及源码编译---Android源码下载

四. Android源码下载 4.1     安装repo 在home目录下建立bin文件夹 $ mkdir ~/bin $ PATH=~/bin:$PATH 安装并更改权限 $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 4.2     初始化repo 创建工作目录(存放源码) $ mkdir Android4.1 $ cd Android4.1

ubuntu12.04 安装android sdk /ndk/源码 编译环境

做android已经近5年了,期间android的各种环境都自己配过,自己是个想法比较多的人,各自神奇到想法都有,包括写博客,但是一直是没有具体落实...想法再多,不去努力实现也只能是想法了,今天准备从写博客这个小事开始做起,磨练自己到,不废话了,直接进入主题: 一.JDK(下载并安装jdk),注意事项如下: a.32位需要下32的,64位的也注意是下载64位的: b.配置环境变量: $ sudo gedit /etc/profile           在文件的末尾加上如下内容:       

Android介绍以及源码编译(一)

一. Android概况 1.1     简介 Android是一种基于Linux的自由及开放源代码的操作系统.主要用于移动设备,如智能手机.平板电脑.TV.穿戴设备,由Google公司和开放手机联盟领导及开发. Android操作系统最初由Andy Rubin开发,主要支持手机.2005年8月由Google收购注资Google以Apache开源许可证的授权方式,发布了Android的源代码. 第一部Android智能手机发布于2008年10月. 1.2     Android版本 Google

Android介绍以及源码编译---Ubuntu系统Android编译环境配置

三. Ubuntu系统Android编译环境配置 3.1     选择安装源: 系统安装完成后,进入系统时首先选择好软件更新源,后面所有的软件包安装都会从这个更新源中获取. 选择路径:System settings --> Software & Updates --> Ubuntu Software --> Download from --> Other 原则上使用距离你所在地区较近的服务器.例如:中国可以选择http://mirrors.163.com/ubuntu 为编

Android介绍以及源码编译--编译Android源码

一. 编译Android源码 5.1     初始化环境变量 1 $ source build/envsetup.sh 2 $ . build/envsetup.sh 3 $ lunch full-eng 5.2     编译Android系统 1 $ make –jN 其中N参数代表你计算机的线程参数,数字越大,编译速度越快,但是要看你计算机支持到什么地步. 我使用的是 $ make –j8 经过几天的编译,终于看见胜利的曙光:system.img成功生成! 5.3     运行模拟器 编译成

Mariadb源码编译过程

从微博上看到有人提及Mariadb,搜索了一下,找到地址https://mariadb.org/,这是mysql的一个分支,由原作者维护,意在与oracle分庭抗礼,避免oracle将来毕源. 目前版本Mariadb 10.0.10,我下载了一个,准备编译一个64位版本,下载地址: https://downloads.mariadb.org/mariadb/10.0.10/ 下载后用cmake编译一下试试,进入cmake图形界面,编译器选择vs12.0 win64 Warning: Bison

Android源码编译过程

http://my.oschina.net/zhoulc/blog/170698 http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html 注意: 1,不要使用64位ubuntu 2,务必分配4g或者以上的swap空间 系统定制基本流程:获取源码 --> 修改源码(包括修改和裁剪)--> 编译修改后的源码 --> 得到目标系统文件 --> 移植系统 --> 测试成功 --> 完成 一,源码下载 谷歌搜索

Hadoop源码编译过程

一.           为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作. native目录是本地库,位于hadoop-2.x.x/lib/native目录下,仅支持linux和unix操作系统. hadoop中的zlib和gzip模块会加载本地库,如果加载失败,会提示: 16/07/06 12:18:24 WARN u