Android源码 ——编译Android5.0源码(Win7+VMware12+Ubuntu16)

    xiaoxiao2021-12-14  42

    上一篇文章中我们整合了构建下载Android源码环境的资料:

    Android源码 —— 构建下载Android源码的虚拟机环境(Win7+VMware12+Ubuntu16)

    本文将介绍如何在VMware+Ubuntu16环境下编译已经下载好的Android源码。

    你想知道关于如何编译源码的一切都在这里:

    Android官网:Android源码编译环境的编译指南

    准备编译环境

    JDK、OpenJDK环境

    上一篇文章中已经提示过JDK的环境需要,这里不累述,查看笔者的编译环境:

    goodong@ubuntu:~$ java -version

    java version “1.7.0_95” OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-3) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

    编译所需的依赖

    以下提到的编译需要依赖的程序,请务必确认每个都安装成功:

    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev sudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install lib32z-dev ccache sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

    如果安装过程中出现错误,务必逐个搜索解决方案,可能某些程序的版本有变动:

    例如 :lib32z-dev 有可能需要安装:lib32z-dev:i386

    配置SWAP交换分区

    交换分区SWAP:一段用于在Ubuntu Linux服务上增加可用内存的空间。

    Swap space is nothing but a disk storage used to increase the amount of memory available on the Ubuntu Linux server

    Android官网:Android源码编译环境的编译指南 建议RAM/SWAP至少要配置15G。也就是说,要么你分配给虚拟机的内存达到15G,要么你要创建一个15G的SWAP空间。

    配置SWAP的教程: Ubuntu Linux Create and Add Swap File Tutorial 在ubuntu中使用file当swap http://www.linuxidc.com/Linux/2014-08/105223.htm

    编译源码

    删除任何之前编译输出

    $ make clobber

    通过envsetup.sh脚本初始化编译环境

    $ source build/envsetup.sh

    或者简单的使用 . 代替 source

    $ . build/envsetup.sh

    选择编译目标

    $ lunch You’re building on Linux Lunch menu… pick a combo: 1. aosp_arm-eng …… Which would you like? [aosp_arm-eng]

    选择1:

    $ 1

    执行编译

    跟着-j后面的数字根据你的Ubuntu系统配置来设定。如果你的配置是:2个CPU,每个CPU有5个核,每个核可以开启2个硬件线程,那么进行最快编译的数字在:20(2*5*2)~ 40 (2*5*4)之间。

    笔者使用3个CPU,5核: 编译时命令使用:

    $ make -j15

    接下来就是漫长的等待和解决可能错误了。

    编译成功的标志

    编译成功后如下图:

    进入/源码根目录/out/target/product/generic目录,可以看到编译好的文件:

    启动模拟器

    编译SDK

    编译SDK与编译源码相类似:

    $ source build/envsetup.sh

    $ lunch sdk-eng

    $ make sdk

    编译成功的提示

    遍历到 /源码根目录/out/host/linux-x86/sdk/sdk$

    启动模拟器

    如果你编译成功之后没有关闭编译时所用的终端则直接使用emulator就可以启动模拟器,否则需要重新初始化环境:

    $ source build/envsetup.sh

    $ lunch aosp_arm-eng aosp_arm-eng 是在编译时选择的build target

    $ emulator 启动模拟器参看:

    android4.4 源码编译之运行模拟器 编译并运行Android4.0模拟器

    编译Android Linux内核

    下载goldfish代码

    在已下载的Android源代码根目录下:

    $ mkdir kernel

    $ cd kernel

    $ git clone http://android.googlesource.com/kernel/goldfish.git

    下载完毕之后,kernel目录下会多出一个goldfish目录:

    $ cd goldfish

    查看所有分支: $ git branch -a

    master remotes/origin/HEAD -> origin/master remotes/origin/android-3.10 remotes/origin/android-3.4 remotes/origin/android-goldfish-2.6.29 remotes/origin/android-goldfish-3.10 remotes/origin/android-goldfish-3.4 remotes/origin/linux-goldfish-3.0-wip remotes/origin/master

    启动虚拟机,使用adb工具连接,查看当前的内核版本

    $ adb start-server $ adb remount $ adb shell cat /proc/version

    Android5.0使用的是3.4的内核:

    合入3.4版本的代码:

    $ git chekout remotes/origin/android-goldfish-3.4

    合入完毕后在goldfish目录下创建一个新的文档,并命名为make_zImage.sh

    #!/bin/bash export PATH=/Android源码根目录/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin:$PATH export ARCH=arm export SUBARCH=arm export CROSS_COMPILE=arm-eabi- make goldfish_armv7_defconfig make zImage -j2

    然后修改goldfish目录下Makefile文件:

    ARCH ?= arm CROSS_COMPILE ?= arm-eabi-

    执行make_zImage.sh脚本:

    $ chmod a+x make_zImage.sh

    $ ./make_zImage.sh

    当控制台输出:

    Kernel : arch/arm/boot/zImage is ready

    时,内核代码就编译成功了。 使用新编出来的内核启动模拟器:

    $ emulator64-arm -kernel 源码根目录/kernel/goldfish/arch/arm/boot/zImage

    可参看的编译经验

    ubuntu 编译android源码 (android-5.1.0_r3) ubuntu编译安卓5.0源码小记 编译Android源码致命错误解决方案 Ubuntu 16.04 LTS 成功编译 Android 6.0 源

    转载请注明原文地址: https://ju.6miu.com/read-969549.html

    最新回复(0)