64位ubuntu12 ,vmware 10, 编译android4.4.2
硬件环境 :
笔记本,64位 win7, i3 2.4G双核4 线程的cpu, 内存4G, 硬盘500G ,给虚拟机留100G
下载Android代码需要大约4G, 单独make需要30G空间,完全编译需要60G以上的空间,官网的建议是预留100G
-------------------------------------------------------
vmware workstation 10
ubuntu-12-4-64bit. iso ubuntu12-04, 64位,,
ubuntu13开始用的是linux3.0 以上的内核, 而android现在的最高版本4.4.2用的是2.6的内核,所以,个人认为用ubuntu12比较合适。
虚拟机硬件 :双核4线程的cpu, 内存2G, 硬盘100G
安装大概1到 2个小时
必须用 2d 登录,默认第一条登录是黑屏的, 为什么会酱紫的呢,不清楚。
账户 gl/lgl
sudo passwd root 修改root用户密码
----------------------------------
网络 设置
1 虚拟机网络 setting 选择 bridge 方式,并且勾选 “复制物理连接状态”
2 虚拟网络编辑器-->vmnet0, 桥接到无线网卡或者有线网卡
3 sudo gedit /etc/network/interfaces 内容如下
auto eth0
iface eth0 inet static
address 192.168.1.130 ###虚拟机的ip
gateway 192.168.1.1 ##网关
netmask 255.255.255.0
network 192.168.1.1 #你可以试下,是否能省掉这一句
#in order to get internet access from host
dns-nameservers 192.168.1.1
#192.168.1.1 是我的网关,路由器的ip, 注意这里的域名服务器不是什么 8.8.8.8之类的,要设置成上网的网关ip地址192.168.1.1
在相对较早的版本中,你需要设置/etc下的resolv.conf文件,并加入nameserver,这样才可以连接互联网。
但在Ubuntu 12.04之后,已经不推荐这种方式了,因为无论你想该配置文件中设置什么值,重新启动之后都会被还原为初始状态。推荐的做法是直接在interfaces配置文件中加入dns-nameserver <网关IP>这一行。
sudo /etc/init.d/networking restart
$ ping
www.baidu.com 验证下网络是不是通了
安装 openss , 就可以使用winscp 了,winscp 方便 在本机核虚拟机之间拷贝数据
sudo apt-get install openssh-server
winscp 登录 ip 192.168.1.130
账户 root/lgl
---------------I下面-下载android 源码- -到 windows 下面再 传到ubuntu中来------------------
如果从google的官方网站下载,首先确定官网没有被共党墙掉, 其次那个repo的下载 ,文件超过20个G, 速度能否保证,有下一个星期的都有。
从 baidu云 盘 , 下载的 4.4.2版本的 ,
4.4.2只支持64系统,其实从4.2版本开始就不支持32系统了,前面在32位的centos下面白忙活了几天,编译不了,也没有个提示,麻痹的比红会黑,比城管黑,黑不过刮民党
http://blog.csdn.net/ilittleone/article/details/6823441
中的连接
百度那网盘地址:
http://pan.baidu.com/s/1o6NQATW
源码下载
-------------------------下载 安装jdk1.6的,,ubuntu12自带的openjdk不能用的------------
csdn 里面下载 jdk-6u4-linux-x64-rpm.bin
关于 rpm包 的
rpm 安装 出了点问题,
最终,该用下载6u4-linux-x64.bin 安装的
sudo mkdir
/usr/local/java
拷贝6u4-linux-x64.bin到
/usr/local/java/ 下面
$sudo chmod 755 6u4-linux-x64.bin
$sudo ./6u4-linux-x64.bin
一定要sudo , 你麻痹,刮民党的干活,匪党, 良心大大滴坏了
$ sudo gedit /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.6.0_32
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
$ source /etc/profile
$ java -version 验证jdk 是否安装正确可用
----------------------------------------
-------安装 编译android、源码用的依赖的包 -----
$ apt-get update
--------ubuntu12 自带的 gcc 4.6的版本 太高了,不能用来编译android4.4的
sudo apt-get install gcc-4.4 g++-4.4
sudo apt-get install g++-4.4
cd /usr/bin/
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
sudo mv g++ g++.bak
sudo ln -s g++-4.4 g++
=----------------------------------------
ubuntu12 默认自己安装了Python2.73, 刚好满足要求, 别再下载了,你再去apt-get一个回来可能是3.0以上的版本的,反而不一定兼容。
sudo apt-get install flex libxml2-utils gperf ccache bison ia32-libs-multiarch:i386
上面的依赖包下载 和安I装 ,我的电脑配置需要大概 2个小时吧 。
------------------------------------------------------------------------
sudo gedit ~/.bashrc
#export ANDROID=/home/lgl/android/mydroid
#export ANDROID_PRODUCT_OUT=/home/lgl/android/mydroid/out/target/product/generic
#export ANDROID_PRODUCT_OUT_BIN=$ANDROID/out/host/linux-x86/bin
#export ANDROID_SWT=/home/lgl/android/mydroid/out/host/linux-x86/framework
#export PATH=$ANDROID/out/host/linux-x86/bin:$ANDROID/prebuilt/android-#arm/kernel/:$ANDROID_PRODUCT_OUT:$PATH
#export PATH=$PATH:$ANDROID/prebuilt/linux-x86/toolchain/ARM-eabi-4.4.0/bin
#export ARCH=arm
export USE_CCACHE=1
#只需要上面这一条ccache开关语句就可以了, 打了#的是注释了的,不用考虑的
$ source ~/.bashrc
--------------------------
拷贝 android源码的压缩文件到 /home/lgl/android/ ,解压为 /home/lgl/android/mydroid/, 这个就是android的根目录了
sudo chmod 755 /home/lgl/android/mydroid/
sudo chmod 755 /home/lgl/android/mydroid/*
cd /home/lgl/android/mydroid/
bashrc 里面已经 定义了 export USE_CCACHE = 1,
sudo prebuilts/misc/linux-x86/ccache/ccache -M 60G
其中60G 这个数字 根据自己的分配的硬盘空间做调整
source build/envsetup.sh
lunch
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. mini_armv7a_neon-userdebug
6. mini_mips-userdebug
7. mini_x86-userdebug
8. aosp_grouper-userdebug
9. aosp_deb-userdebug
10. aosp_tilapia-userdebug
11. aosp_flo-userdebug
12. aosp_mako-userdebug
13. aosp_hammerhead-userdebug
14. aosp_manta-userdebug
直接回车 ,就是选择默认第一项,aosp_arm-eng,这个编译出来的针对arm处理器的通用版, 在emulator下面跑是没有问题的,
如果你有开发板, 或者做实验用的手机, 可以把编译出来的 影像拷进去,就可以了, 我自己的手机当然不能拿来做实验了。
make -j4
数字4根据自己的cpu调整,cpu是几个内核就写多少了
---------------编译 ,我的电脑至少5个小时,
编译成功后:
1 在 /out/target/product/generic/ 下面有应该有三个文件:
system.img( 我的就没有生成这个文件,内存不够,编译中途就停止了,重新启动继续完成了最终的编译,同时也生成此文件)
userdata.img
ramdisk.img
2 可以 启动模拟器
source build/envsetup.sh
lunch
1 回车确认
emulator
运行命令 $emulator 就可以 运行模拟器
android 编译官方文档 http://source.android.com/source/building.html
祝你好运!