一,安装VMware Workstation,百度网盘下载(内含注册机)
链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7
VMware Workstation 15 Pro 永久激活密钥 下载
https://blog.csdn.net/felix__h/article/details/82853501

二,创建新的虚拟机

三,下载Ubuntu系统镜像,配置虚机的CD/DVD路径为当前下载的ubuntu-16.04.6-desktop-amd64.iso系统镜像文件路径。
ubuntu16.04下载地址:
 中科大源
http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/
 阿里云开源镜像站
http://mirrors.aliyun.com/ubuntu-releases/16.04/
 兰州大学开源镜像站
http://mirror.lzu.edu.cn/ubuntu-releases/16.04/
 北京理工大学开源
http://mirror.bit.edu.cn/ubuntu-releases/16.04/
 浙江大学
http://mirrors.zju.edu.cn/ubuntu-releases/16.04/

四,启动虚拟机,安装Ubuntu系统
启动过程中,VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态,解决方式:
Intel VT-x完整名称是Intel Virtualization Technology,就是Intel虚拟技术,开启它可以让硬件平台同时运行多个操作系统,是虚拟机软件运行必备的技术之一,如果禁用,就会弹出“此主机支持Intel VT-x,但Intel VT-x处于禁用状态”这个提示,解决办法就是进BIOS开启Intel Virtualization Technology。

五,设置Windows与Ubuntu系统间的共享文件夹目录

六,下载android-6.0.1_r72源码压缩包,将下载好的Android源码压缩包android-6.0.1_r72.7z放置共享目录。
android-6.0.1_r72版本源码下载链接:
https://pan.baidu.com/s/1skEVR1F 密码: ik6t

七,安装7z解压缩工具,将android-6.0.1_r72.7z压缩包解压至当前目录。
sudo apt-get install p7zip
解压:
7za x android-6.0.1_r72.7z -r -o./

八,配置系统编译环境
(1) 安装open JDK7
Android 6.0只能使用OpenJDK7才能编译成功,具体原因读者查资料,这里不在解说。

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

打开/etc/profile文件,配置OpenJDK:

sudo gedit /etc/profile

在末尾追加下面代码:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

修改完/etc/profile文件需要重启才能生效,但在不重启的情况下,使用下面命令可以使当前bash环境生效:

source /etc/profile

检查OpenJDK:

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)

(2) 修改源码
修改源码/android-6.0.1/art/build/Android.common_build.mk文件,定位到75行,将下面的代码

ifneq ($(WITHOUT_HOST_CLANG),true)

改成:

ifeq ($(WITHOUT_HOST_CLANG),false)

若不修改这里,编译源码的时候会出现错误,修改的目的是为了把CLANG这个编译选项关掉,不会影响源码编译。

(3) 安装依赖
更换软件源为阿里云
为了更快的安装软件,我们需要更换软件源为国内的软件源,这里推荐使用Ubuntu官方指定的国内软件源阿里云,博主之前使用的是网易的软件源,结果发现OpenJDK7装不上去,于是换成了阿里的,具体方法是:

sudo gedit /etc/apt/sources.list
在文件最前面加入下面代码:

deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse

这是编译源码前的最后一步,也是做重要的一步,若不安装依赖,在编译过程中会出现源码编译错误的现象。
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

Ubuntu 16.04请务必使用上面的依赖,Ubuntu 16.04需要的依赖和Ubuntu 14.04所需要的依赖是不同的,照着Ubuntu 14.04的依赖结果掉进大坑

九,开始编译
(1) 在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

(2) 提高编译效率,设置编译器高速缓存:

prebuilts/misc/linux-x86/ccache/ccache -M 50G

(3) 导入编译Android源码所需的环境变量和其它参数:

source build/envsetup.sh

(4) 运行lunch命令选择编译目标: 选择5

(5) 开始编译
make -j8

make -jN来设置参与编译的线程数量,一般来说设置为cpu核心数的两倍,N是cpu核心数。

查看cpu个数,可以用下面命令:
cat /proc/cpuinfo

问题:make: *** wait: 没有子进程。 停止。
尝试1:降低make版本,将make 4.1版本降低为make 3.81版本
https://blog.csdn.net/daoliting5268/article/details/84503064
make下载地址:
https://ftp.gnu.org/gnu/make/

make -version
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

(6) 编译成功
进入/android-6.0.1/out/target/product/generic_x86目录,可以看到编译好的文件:

十,编译SDK,启动模拟器:
emulator
问题:emulator:未找到命令
解决:需要将sdk编译一遍,就可以直接执行emulator 命令,也不用带 -kernel参数 --sysdir -system -data -ramdisk 等几个参数。
source ./build/envsetup.sh
lunch sdk-eng
make sdk

在/out/host/linux-x86/sdk/sdk 目录下就可以看到编译好的SDK

再次emulator,稍等几分钟,就可以出现模拟器画面了

十一,下载、编译 kernel
(1)下载kernel
下载下来的Android源代码,是不包括linux kernel内核代码的,是使用的谷歌工程师们预先编译好的内核(在prebuilts/qemu-kernel文件中),它们是两个部分。下载下来是为了方便查看里面的内核结构。
是用的3.4版本的内核,因此自己也要下载Android源码系统对应的内核版本。

在android根目录下创建kernel文件夹
mkdir kernel
cd kernel

下载kernel源码,初始化仓库:

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git

会自动创建一个goldfish目录,进入goldfish目录:

cd goldfish
查看所有分支:

git branch -a
切换到android-goldfish-3.4分支

git checkout -b android-goldfish-3.4 origin/android-goldfish-3.4

现在kernel源码就下载到goldfish目录下了。

(2)编译内核源码
在下载好的Android系统源码目录中新建kernel文件夹,把goldfish复制到kernel文件夹下。
修改goldfish目录下makefile文件配置:

sudo gedit Makefile
定位大约第195行:

ARCH            ?= $(SUBARCH)
CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

更改为

ARCH            ?= arm
CROSS_COMPILE   ?= arm-eabi-

进入goldfish目录,配置环境变量:
export PATH=$PATH:~/rwShare/android-6.0.1_r72/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin

编译:
make goldfish_armv7_defconfig

最后执行:
make

返回Android系统源码目录,运行模拟器:
source build/envsetup.sh
lunch sdk-eng
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
//从内核文件启动模拟器

分析的此次,VMware虚拟机下载安装,Ubuntu16.04系统下载安装,Android系统源码下载、源码编译、SDK编译、内核编译就结束了。接下来,就开始该读者分析源码、解读源码、修改源码了。

Ubuntu16.04编译Android 6.0系统源码过程简要记录总结相关推荐

  1. Ubuntu 16.04 编译Android 6.0系统源码

    准备环境 1.安装open-jdk7 [使用open-jdk8会报错],原因是: 在build/core/main.mk中默认指定的是jdk1.7 # Check for the correct ve ...

  2. android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码

    NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...

  3. android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?

    点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 :  刘望舒  |  来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...

  4. Android 8.0系统源码分析--开篇

    个人分类: Android框架总结Android源码解析android framework 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sinat ...

  5. Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析

    相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline.接各种算法的Node.再往下的 ...

  6. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  7. Android FrameWork学习(一)Android 7 0系统源码下载 编译

    最近计划着研究下 Android 7.0 的系统源码,之前也没做过什么记录,这次正好将学习的内容记录下来,方便以后复习巩固. 既然要学习我们的系统源码,那我们第一步要做的就是下载源码并进行编译了. # ...

  8. Android FrameWork学习(一)Android 7.0系统源码下载\编译

    重点内容 转载. http://blog.csdn.net/cjpx00008/article/details/60474883 硬件环境要求 1. 编译环境 按照官方的说法,编译Android 2. ...

  9. ubuntu16.04 下 android 4.4.4 源码编译

    文章目录 环境依赖 编译过程 问题 1.MODULE.TARGET.SHARED_LIBRARIES.xxx already defined by xxx 2.make: **** No Rule t ...

最新文章

  1. 菜鸟学习HTML5+CSS3(一)
  2. .NET中,字符串首字母大写的方法
  3. php 数组导出csv_php导出CSV抽象类实例
  4. 组织在召唤:如何免费获取一个js.org的二级域名
  5. 如何安全使用计算机,如何安全的使用计算机
  6. 如何处理服务器磁盘沾满
  7. 并发编程-信号量的使用方法和其实现原理
  8. EasyUI层与拖拽系列控件
  9. 移动平均滤波器 matlab,移动平均滤波的原理---matlab函数的实现smooth
  10. Scratch 模拟病毒传染小程序
  11. 快递100 的 《API URL 所支持的快递公司及参数说明》和《支持的国际类快递及参数说明》
  12. 华为设备配置OSPF的NSSA区域
  13. 2021年井冈山中学高考成绩查询入口,【高考成绩】2019年高考成绩揭晓,井冈山中学取得好成绩!...
  14. XJTU 新闻英语阅读unit1作业答案
  15. vim实用指南(9)vimdiff好用的可视化文本对比工具
  16. 吃不了读书的苦,注定要吃一生的苦
  17. Grad-CAM简介
  18. C语言的字符串输入gets()函数
  19. java利用FFMpeg将mp4转换为gif
  20. 小piu页面,突然比例变很小,如何调整

热门文章

  1. 福尔摩斯到某古堡探险
  2. scram-sha1
  3. 看《骇客帝国-重装上阵》说法语
  4. iOS 图标适配官网
  5. 5G NR空口物理层主要参数解读
  6. 计算机图学实验报告,计算机图形学实验报告实验1
  7. CMUSphinx免费离线语音识别开源库教程iOS开发
  8. PHP输出一段励志的话,100句关于励志的话,青春励志的话,写得好的励志句子
  9. 对比python字符串函数,学习pandas的str矢量化字符串函数
  10. 项目管理中什么最重要?