VisualBox ubuntu14.04 64位 android4.4.4源码编译总结

折腾了好几天,今天终于编译通过,用了4个多小时,太不容易了。如下图所示:

软件环境

虚拟机:VisualBox

操作系统:Ubuntu14.04 64位

android源码:android-4.4.4_r1

在这过程中遇到各种问题,通过apt-get install 安装相应的库可以解决一部分。编译2-3个小时的时候遇到一个棘手的问题,

“make: *** [out/target/product/mako/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] 错误 1”

google和baidu都没有找到解决方法。查看网友成功编译android4.4源码的文章,里面的提到的步骤自己都操作一下,终于可以编译成功了,下面列出了自己操作的步骤:

1. 如果使用虚拟机的话,特别提醒一下,一定要将虚拟机的大小开到100G以上

2. 下载并安装jdk6
  注意,版本一定要是jdk6,其他版本都会有问题。
  网上流传的方法大都是apt-get install来安装jdk,实际操作证明这样是不行的,下面给出个下载jdk6的地址
  https://jdk6.java.net/download.html  在这里根据自己机器配置情况选择自解压文件(self-extracting)就好了
  上面下载得到jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin文件,改变属性使其拥有可执行权限。
  ./jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin即可安装,该jdk是32位的。

3. vim ~/.bashrc 在最后添加

PATH=$PATH:/usr/local/java/jdk1.6.0_38/bin
CLASSPATH=.:/usr/local/java/jdk1.6.0_38/lib
JAVA_HOME=/usr/local/java/jdk1.6.0_38

然后执行source ~/.bashrc 使配置生效

4. 设置Ubuntu下默认的jdk
  因为ubnuntu中有默认安装的openjdk,但我们编译Android源码是需要jdk6的,所以需要设置默认成jdk6
   sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
   sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
   update-alternatives --config java

5. 测试jdk环境变量是否正确配置

VBox:~$ java -version
java version "1.6.0_38-ea"
Java(TM) SE Runtime Environment (build 1.6.0_38-ea-b04)
Java HotSpot(TM) Server VM (build 20.13-b02, mixed mode)

若出现上述信息,则说明jdk环境变量已经配置成功

6. 预先要安装的其他软件
  说明下,为保证编译过程中不老是缺少某些软件而中断,所以一定要做好准备工作,不打任何一场无准备的仗。
  网上很多前辈都已经给出来了不少要提前安装好的软件,下面把它们集中整理出来。

sudo apt-get install build-essential make gcc g++ libc6-dev patch \
texinfo libncurses-dev flex bison git-core gperf libsdl-dev libesd0-dev \
libwxgtk2.6-dev build-essential zip curl ncurses-dev zlib1g-dev valgrind

上面这个命令,我没有执行,安装了下面提到的几个包。

sudo apt-get install libgtk2.0-0:i386
  sudo apt-get install libpangox-1.0-0:i386
  sudo apt-get install libpangoxft-1.0-0:i386
  sudo apt-get install libidn11:i386
  sudo apt-get install gstreamer0.10-pulseaudio:i386
  sudo apt-get install gstreamer0.10-plugins-base:i386
  sudo apt-get install gstreamer0.10-plugins-good:i386
  sudo apt-get install gstreamer0.10-ffmpeg:i386(该软件我没有安装成功,最后也没出什么问题)
  
  再加个说明:上面的软件中最后几个以i386是因为一个错误(具体什么错误现在实在记不起来了),错误原因就是需要安装ia32-libs的软件包64位Linux(Ubuntu)上编译Android源码时还需要一个32位Linux的包,所以需要这个ia32-libs的支持包,但这个ia32-libs的软件包在网上根本没有找到,也没发现实际可用的解决方案,但从Ubuntu官网上来看,这个ia32-libs其实就是若干软件包的合集,所以下载安装其中的那么几个软件包就可以达到我们的目的。

7. 为了提高编译的效率,我们最好先设置一下编译器的高速缓存从而加快编译速度,使用下面的命令

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

注意事项:

① 前提是已经在 .bashrc文件中添加:export USE_CCACHE = 1

② ccache是一个可执行文件

③ -M 50G 两个参数表示设置50G大小的空间作为缓存,这个数值可以根据自己时间硬盘空间大小继续调整

ccache是一个编译器ccache用于C和C++。可以让构建更加快速。

可以使用如下操作来查看使用的ccache大小:

$watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s

若使用Ice Cream Sandwich(4.0.x)或更老的版本,需要用prebuilts来代替prebuilts/misc

8. 正式编译Android源码
  做了那么多的准备工作,现在终于可以做正事了。根据Android官网的说法,编译Android源码执行下面三个命令即可
  ① source build/envsetup.sh
  ② lunch 此时要选择一个编译平台
    运行 lunch 命令选择好编译目标后,会出现如下提示信息,告诉我们编译的源码一些相关信息


  ③ make -jn
    这里的n注意取值,网上一般说法是CPU核数的两倍,还有一说是CPU核数加1。到底哪个更准确我也没有验证。
    但要值得提醒的是,虽然n用一个大的值会使编译速度加快,但如果n取值过大,编译是会报错的。
    如果实在不确定n应该用什么值,那就直接用make命令吧。

编译完成之后在源码目录的out/target/product/generic/生成对应固件等文件,如下图所示,我们可以运行模拟器或者刷机。

out/target/generic目录包含了最终要使用的目标文件。
out/target/generic/system目录是system.img解压后的目录。android系统中大都数程序都在system目录中,包括apk应用程序(out/target/generic/system/app)。

out/target/generic/root目录是ramdisk.img解压后的目录。

out/target/generic/data目录是userdata.img解压后的目录。

时间: 2024-08-05 06:16:07

VisualBox ubuntu14.04 64位 android4.4.4源码编译总结的相关文章

ubuntu14.04 64位安装WPS(成功解决没有ia32-libs的问题)

前几天,就把自己的系统换成了ubuntu14.04 64位的.然后就是安装WPS了(戳这里进入官网下载).由于官网提供的WPS是32位的操作系统,所以64位的操作系统不能用.因此我们还要安装32位操作系统的库文件.官网提供的方法为: 但是发现ubuntu14.04根本就没有这个.在网上找了大半天,试了好多办法都没有用,今天又来谷歌,终于找到一个可行的办法.下面是我的一些操作: [email protected]:~$ sudo passwd root [sudo] password for zh

Ubuntu14.04(64位)安装ATI_Radeon_R7_M265显卡驱动

电脑型号:Dell inspiron 14-5447 笔记本 显卡配置:集成显卡Intel核心显卡,Cpu是i5-4210U;独立显卡ATI_Radeon_R7_M265 网上关于ATI/Intel双显卡的帖子很多,刚开始我装的是Ubuntu12.04(64位). 在12.04版本下,使用lshw -c video命令查看显卡信息,集显和独显是都没有驱动的.在这种情况下,照网上方法装fglrx闭源驱动各种失败,换成Ubuntu14.04(64位)后,Intel集显的驱动有了,使用网上办法装fgl

Ubuntu14.04 (64)位系统安装genymotion模拟器和集成到android studio!!!

Ubuntu14.04 (64)位系统安装genymotion模拟器: 1.在应用商店里面安装VirtualBox 2.在genymotion的官网上下载,首先要注册,要去邮箱完成验证 2.注册后登陆,然后点击get genymotion 3.进入后什么也别管,直接点击download 4.进入页面后下载需要的文件,下载Linux64位的版本 5.进入下载文件夹,会发现有一个genymotion-2.5.0_x64.bin的文件,首先在终端里面赋予这个文件夹权限chmod -x genymoti

ubuntu14.04 64位 安装H3C iNode客户端

环境: OS: ubuntu14.04LTS 64位 iNode:  iNode2.40-R0162 for linux(此版本只有32位,而且是很久以前的版本) 安装方法: 第一种:主要参考:http://www.lxway.com/491008804.htm 检查本机是64位还是32位: dpkg --print-architecture 然后可以看到amd64,证明当前系统是64位的.然后再输入 dpkg --print-foreign-architectures 看到的是i386证明你已

linux学习(六) Ubuntu14.04(64位)配置android环境报错(...adb": error=2, 没有那个文件或目录)的解决方案

1.问题描述: 最近测试android环境的时候,运行程序,提示以下错误信息: Cannot run program error=2, 没有那个文件或目录' while attempting to get adb. 运行环境是 unbuntu 14.04 64位系统; 2.问题原因: 在网上搜索答案的时候,找到了问题的原因:因为系统是64位的,而Android sdk只有32bit的程序.所以就存在这不兼容的问题,缺少一些sdk运行的库. 3.解决方案: 很多软件只有32位的,还有很多比较依赖3

ubuntu14.04 64位 安装JDK1.7

1 新建文件夹 [email protected]:~$ sudo mkdir /usr/lib/jvm 2 解压文件 [email protected]:~$ sudo tar zxvf jdk-7u71-linux-x64.tar.gz -C /usr/lib/jvm 3 打开设置环境变量文件 [email protected]:~$ sudo gedit /etc/profile [sudo] password for youhaidong: (gedit:6266): IBUS-WARN

一条命令搞定在VMware中的Ubuntu14.04 64 位安装Docker

对,就是这么炫酷! curl -sSL https://get.docker.com/ | sudo sh 如果提示没有装curl就apt-get install一下,另外提醒一下必须是64位的ubuntu,因为docker已经对32位的不支持了.

【kubernetes】ubuntu14.04 64位 搭建kubernetes过程

背景: Kubernetes介绍:http://kubernetes.io/docs/getting-started-guides/ github地址:https://github.com/kubernetes/kubernetes 在ubuntu上安装文档官方地址:http://kubernetes.io/docs/getting-started-guides/ubuntu/ 环境: Master: Ubunut14.04 192.168.27.135(NAT)  Minion1: Ubunt

ubuntu14.04 64位 安装搜狗输入法

deb格式的搜狗输入法,搜狗拼音官网可以下载到 http://pinyin.sogou.com/linux/?r=pinyin (64位) 2.使用deb安装工具gdebi,这个工具能解决所有依赖问题 #sudo apt-get install gdebi 3.直接安装 #gdebi ~/sogou_pinyin_linux_1.0.0.0033_amd64.deb 然后注销,如果没有出现搜狗请在 系统设置->语言支持->键盘输入方式系统->选择fcitx 注销 注: 如果你的系统已经装