Android源码 ——编译Android5.0源码(Win7+VMware12+Ubuntu16)
2016-12-03 14:41
459 查看
上一篇文章中我们整合了构建下载Android源码环境的资料:
Android源码 —— 构建下载Android源码的虚拟机环境(Win7+VMware12+Ubuntu16)
本文将介绍如何在VMware+Ubuntu16环境下编译已经下载好的Android源码。
你想知道关于如何编译源码的一切都在这里:
Android官网:Android源码编译环境的编译指南
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 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
或者简单的使用 . 代替 source
$ . build/envsetup.sh
You’re building on Linux
Lunch menu… pick a combo:
1. aosp_arm-eng
……
Which would you like? [aosp_arm-eng]
选择1:
$ 1
笔者使用3个CPU,5核:
编译时命令使用:
$ make -j15
接下来就是漫长的等待和解决可能错误了。
进入/源码根目录/out/target/p
a0e6
roduct/generic目录,可以看到编译好的文件:
$ source build/envsetup.sh
$ lunch sdk-eng
$ make sdk
编译成功的提示
遍历到 /源码根目录/out/host/linux-x86/sdk/sdk$
$ source build/envsetup.sh
$ lunch aosp_arm-eng
aosp_arm-eng 是在编译时选择的build target
$ emulator
启动模拟器参看:
android4.4 源码编译之运行模拟器
编译并运行Android4.0模拟器
$ 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
然后修改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编译安卓5.0源码小记
编译Android源码致命错误解决方案
Ubuntu 16.04 LTS 成功编译 Android 6.0 源
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
选择编译目标
$ lunchYou’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/p
a0e6
roduct/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 源
相关文章推荐
- Android常用8种设计模式(三)
- Android设计模式之访问者模式 Visitor
- SVN 被锁定解决办法!!!
- Android事件分发与消费
- Android监听home键,亲测
- android从一个应用跳转到另一个应用
- Android开发技巧——BaseAdapter的另一种优雅封装
- Android开发技巧——BaseAdapter的另一种优雅封装
- Android开发技巧——BaseAdapter的另一种优雅封装
- android adb 查询apk安装到了哪里,已经安装到了哪里?
- ANDROID_SDK_HOME作用其一
- 简单自定义View之TitleBar
- AndroidStudio中编译异常: **.apk does not exist on disk.Error while Installing APK
- Android中的DrawRect()参数解析
- android 开发零起步学习笔记(十八):Android Layout 布局属性全解
- android 录像 录制
- Android源码设计模式分析开源项目
- android NDK和源码中输出Log信息的方法
- Android 四大组件的理解
- 【Android - 进阶】之图片压缩