Android 编译环境的搭建

版权声明:原创文章,转载请注明出处 https://blog.csdn.net/qq_21394333/article/details/52123245

Android 编译环境的搭建
导读
笔者在虚拟机VMware Workstation 10+Ubuntu14.04.3 x64bit上编译,和在真机下编译都成功了,经过实践,建议不要使用虚拟机来安装开发环境,因编译时需要很大的内存(2GB 及以上)和较高的 CPU资源(双核 64 位) ,虚拟机可能不能满足要求,请使用安装到实际 PC 的 Ubuntu 系统(即真机)。所需资源都存放在/shanghang文件夹里,方便使用,Android源码很大,放在/Android源码 目录下,包含Android4.3/4.4,请自行取用。
1.1安装Ubuntu14.04.3 x64bit 等编译工具
在这里建议用户使用 Ubuntu 真机进行编译,详见附录:安装Ubuntu系统。
http://releases.ubuntu.com/12.04.5/ Ubuntu12.04.5下载地址
若用户电脑配置好,想在虚拟机下运行,可参见附录:安装VMware workstation,进行详细的安装步骤。这里推荐一个网上的教程(很详细):
http://download.csdn.net/detail/yxchen0811/6995527
注意1:所安装的Ubuntu系统环境最好不低于:内存2G + 虚拟空间80G (Android源码编译完成后,至少需要50G的空间)。
注意2:如果您是在虚拟机里安装的Ubuntu,可能还未安装VMware Tools,需要执行下面的操作进行安装,安装好这个工具后,您就可以在虚拟机内和PC机内随意交换文件了。
步骤 1. 打开虚拟机,运行安装好的Ubuntu
步骤 2. 点击虚拟机菜单栏-安装VMware Tools
步骤 3. 在Ubuntu系统中找到VMwaretools-9.6.2-1294478.tar.gz,右键复制到“桌面”,然后“提取”,在桌面会生成一个文件夹:vmware-tools-distrib
步骤 4. 打开Terminal终端窗口(按键Ctrl+alt+t),输入sudo su,输入密码,然后cd进入桌面的vmware-tools-distrib文件夹,sudo ./vmware-install.pl开始安装,一路按回车确认,安装结束后,输入reboot重启系统。您就可以开心使用了。
1.2 Ubuntu14.04.3 root 用户登录设置
Ubuntu14.04默认是不允许 root 登录的,在登录窗口只能看到普通用户和访客登录。 以普通身份登陆 Ubuntu 后我们需要做一些修改。
说明:操作中的命令前的 “#” 号表示是使用的 root 用户权限,推荐登录Ubuntu时使用 root用户,如果不是使用 root 用户登录,可能会出现编译不成功的情况。
步骤 1:普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入命令后回车:
sudos2Ubuntu14.04root3 gedit /etc/lightdm/lightdm.conf
步骤 4:在文本全部内容删除并粘贴以下六行内容:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
autologin-user=root
autologin-user-timeout=0
autologin-session=lightdm-autologin
步骤 5:然后我们启动 root 帐号:
$ sudo passwd root
步骤 6:根据提示输入 root 帐号密码。(注意:Linux 中输入密码无符号显示)
步骤 7:重启ubuntu不需要手动输入root用户名密码,系统会自动进入 root 用户。
注意:若安装过程遇到,如网络链接、磁盘分区等问题,网上都有很好的解决方案,若仍未 能解决,随时可以咨询本公司,邮箱[email protected]
1.3 安装编译 Android 系统所需要的库

1.3.1 安装编译 Android4.4 系统所需要的库
1.安装编译 Android 必要的包

apt-get -y install git gnupg flex bison gperf build-essential zip \

curl libc6-dev libncurses5-dev:i386 libreadline6-dev:i386 g++-multilib \
mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \
dpkg-dev libswitch-perl
2.安装额外的一些包

apt-get install uuid uuid-dev

apt-get install zlib1g-dev liblz-dev

apt-get install liblzo2-2 liblzo2-dev

apt-get install git-core curl

注意:为保证编译过程中不老是缺少某些软件而中断,所以我们一定要做好准备工作,不打任何一场无准备的仗。网上很多前辈都已经给出来了不少要提前安装好的软件,整理后如下面:安装需要包很可能因环境不同,而有不同的需要,实际可根据make的输出解决。
apt-get install texinfo
apt-get install libncurses-dev
apt-get install libsdl-dev
apt-get install libesd0-dev
apt-get install valgrind
apt-get install libgtk2.0-0:i386
apt-get install libpangox-1.0-0:i386
apt-get install libpangoxft-1.0-0:i386
apt-get install libidn11:i386
apt-get install gstreamer0.10-pulseaudio:i386
apt-get install gstreamer0.10-plugins-base:i386
apt-get install gstreamer0.10-plugins-good:i386

3.安装 JAVA 环境
在终端执行:
# mkdir /usr/local/jdk
拷贝 jdk-6u45-linux-x64.bin 到 /usr/local/jdk 目录下 执行./jdk-6u45-linux-x64.bin 。需要配置的相关环境变量已在源码根目录下的 env.sh 中定义,编译源码之前source一下该文件,如用户将 jdk 放在其他目录下(没有放在上诉目录下时)请自行配置env.sh文件。

  1. 额外的工作
    复制文件夹资料shanghang\Tools\ mkimage 到 ubuntu14.04 /work/下:

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

cd /work/

chmod u+x mkimage

cp mkimage /usr/sbin/mkimage

上述命令先进行一个软连接(ln -s),连接两个目录的内容。进入建好的/work/目录 下,chmod修改文件mkimage的权限,再将它copy到指定的目录。
1.4 Android 系统的编译
Android 4.4.2系统的源码包 android_kk4.4.2_1.0.0.tar.gz位于 shanghang/Android源码 目录下,将它拷贝到ubuntu 文件夹/work/ 下,Android4.3编译雷同;请仔细参见下面步骤。
1.4.1 解压 Android 源码

cd /work/

tar zxvf android_kk4.4.2_1.0.0.tar.gz

注:解压需要一点时间,十分钟以上,耐心等待
解压之后的文件夹 android_kk4.4.2_1.0.0 中包括文件系统、kernel ,uboot
Kernel 位置 android_kk4.4.2_1.0.0/kernel_imx
Uboot 位置 android_kk4.4.2_1.0.0/bootable/bootloader/uboot-imx
1.4.2 Android 系统的编译
1.编译 Android
编译 android4.4 过程依赖于三个脚本文件,这些脚本文件包含在源码解压之后生成的目录下,进入该目录,执行以下命令:

cd /work/android_kk4.4.2_1.0.0

source env.sh

source build/envsetup.sh

lunch sabresd_6dq-eng

make

命令说明:在解压的源码目录下,source env.sh让Java环境生效执行,再初始化编译环境,lunch命令选择编译目标包(平台),最后编译执行make。(再make前,可以先用命令 java -version,查看Java环境是否正确。make -jn jn中的数字n跟你的CPU个数和核数有关。
注:1.建议make不带参数,如果在真机下编译,可添加适当参数,加快编译速度;一般编 译要耗费好几个小时(笔者用了5小时),视电脑配置而定,请耐心等待。
2.若编译过程报错,仔细查看原因,是否因为缺少必要的包,或是内存不足;解决问题 后,可直接再make,直到编译完成。
3.编译生成的镜像全部在 android_kk4.4.2_1.0.0/out/target/product/sabresd_6dq 下 生 成,分别是boot.img 、recovery.img 、system.img 、u-boot-6q.bin。生成这些文件, 恭喜,编译成功了。
2.单独编译 kernel(有时候内核编译并不完整,需要再编译一下)
使用以下命令配置内核: # ./mk.sh kernel menuconfig
使用如下命令来编译 boot.img # ./mk.sh kernel boot.img
使用以下命令来清除 kernel 编译中间文件 # ./mk.sh kernel distclean
注:Android 内核以 boot.img 为单个文件进行烧写,所以要更新 kernel ,需要编译 boot.img ,boot.img 由ramdisk.img ,uImage 以及 kernel 启动参数组成,上面的命令会先检查是否有 ramdisk.img,如果没有会先编译,如果没有会先编译 ramdisk.img ,然后编译 kernel ,如已存在,那么会直接编译 kernel 。
3.单独编译 uboot
使用以下命令来编译 uboot # ./mk.sh kernel distclean
使用以下命令来清除 uboot 编译中间文件 # ./mk.sh uboot distclean
编译成功时的输出如下:
编译结果
编译结果
PS:1.设置root后开机提示错误。
解决方法:在终端中用命令gedit /root/.profile,打开文件后找到“mesg n”,
将其更改为“tty -s && mesg n”。
2.此文档作为内部参考文档,挂出还需修改。
还有其他问题,慢慢更新……

猜你喜欢

转载自blog.csdn.net/qq_21394333/article/details/52123245