
Android 操作系统的核心属于 linux 内核的一个分支,具有典型的 Linux 调度和功能,除此之外,Google 为了能让 Linux 在移动设备上良好的运行,对其进行了修改和扩充。我们可以在 Ubuntu 系统自己动手上编译最新的 Android 系统,并刷入到我们的设备中进行定制。 准备 Ubuntu 14.04 Nexus 5 手机 科学上网工具
官方安装 文档
清华 AOSP 镜像
环境配置编译不同 Android 系统版本对于编译系统的要求:
Android 版本 Ubuntu 版本 Android 6.0 + Ubuntu 14.04 + Android 2.3 - Android 5.x Ubuntu 12.04 +编译不同 Android 系统对于 JDK 版本的要求
Android 版本 JDK 版本 master 分支 OpenJDK 8 Android 5.x ― Android 6.0 OpenJDK 7 Android 2.3x ― Android 4.4.x OpenJDK 6python version = 2.7
以下为在 Ubuntu 14.04 系统中编译为 Nexus 5 设备 Android 5.1.1 并刷入手机为例。其他情况配置参考官网即可,编译环境略有不同。
安装 jdk 7
sudo apt-get install openjdk-8-jdk在 Ubuntu 14.04 上需要安装以下依赖
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip 配置 RepoAndroid 源码采用 Repo 的方式进行下载,首先配置 Repo
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo如果你想使用清华大学的镜像下载:
如果之前有配置要清除干净掉之前的配置
cd ~/bin rm -rf .repo repo重新配置为清华大学镜像
mkdir ~/bin PATH=~/bin:$PATH curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod a+x ~/bin/repo 下载源码 mkdir ~/android #创建一个文件夹 cd ~/android repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest# 初始化仓库如果需要某个特定的 Android 版本,需要使用这条命令。-b 的参数需要根据这个 列表 确定
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r3之后就可以同步源码了
repo sync这个过程就比较长,中间还会有各种断开的情况,重新执行 repo sync 就可以。其实清华大学的镜像还提供一种更方便的方法。
首先要下载初始化包,这个可以使用迅雷进行下载在移动到 Ubuntu 中。地址: https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar 或者
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar解压并 checkout
tar xf aosp-latest.tar cd aosp repo sync -l #仅checkout代码 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r3# 设置同步的分支 repo sync # 同步代码同步时间比较长取决于网络速度,中间还可能有各种原因导致终端,利用 google 大部分问题都可以解决,重新 repo sync 之后,会继续之前同步的进度。
编译系统下载 Nexus5 需要的驱动,不然编译之后的系统只能在模拟器上运行
驱动下载 地址 找到对应机型和对应系统的下载地址,比如我找到 Nexus 5 的驱动下载地址。
wget https://dl.google.com/dl/android/aosp/broadcom-hammerhead-lmy48b-2d0a908d.tgz wget https://dl.google.com/dl/android/aosp/lge-hammerhead-lmy48b-92cca4b9.tgz https://dl.google.com/dl/android/aosp/qcom-hammerhead-lmy48b-021b52eb.tgz下载到 aosp/ 目录下,成功后分别进行解压,为得到三个 .sh 文件,执行之后会将驱动放到 vender 目录下。
./buidl/envsetup.sh # 配置编译环境 lunch # 加载机型选择 aosp_hammerhead-userdebug ,并输入改选项前的序号,按回车键继续。
执行编译命令 make -j8 #编译整个系统 # 其它编译命令 mmm packages/apps/Email/ # 单独编译某个系统应用 make snod#产生一个新的系统映像system.img make ramdisk#编译 ramdisk make userdataimage#编译 userdata make systemimage#编译 system make bootimage#编译 kernel 刷入手机 cd ~/android/qhsource/aosp/out/target/product/hammerhead #连接手机后,按住电源 - 和开关机键,进入 bootloader或者使用一下命令 adb reboot bootloader fastboot -w -p flashall# 进行刷机或者可以拷贝刷机所需要的文件,分别刷入
cd ~/android/qhsource/aosp/out/target/product/hammerhead fastboot flash boot boot.img fastboot flash recovery recovery.img fastboot flash system system.img fastboot flash userdata userdata.img fastboot flash cache cache.img fastboot flash ramdisk ramdisk.img