菜鸟起飞:第一次在ubuntu上编译android源码

算一算自己干android开发,还差那么几个月就要满两年了,可是自己连android源码都没有编译过一次,想想真是说不过去,就想想编译一次,中间还真是遇见了不少的问题,在此写一篇博客供大家参考。

切记:每个人的环境都不相同,可能我的编译过程可以成功,但是对于你的就不成功,在遇到问题的时候要具体对待,具体解决,关键就在于恒心与毅力。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

先大概总结一下过程:

1.安装ubuntu系统

2.安装jdk环境

3.配置编译环境

4.解决编译过程中遇到的问题

5.编译成功

问题解决总结:

1.资源版本很重要

环境情况:

ubuntu12.04 、jdk1.6.45、源码2.3.7

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装Ubuntu系统:

要求:

1.最好是64位的操作系统。

2.最好是真机安装不要使用模拟器。

3.版本最好是12.04或者10.04,我刚开始使用的是14.04(当前最新的),但是发现,有一个问题总是解决不了,所以没办法,只要重新安装了12.04的ubuntu系统,具体什么问题,会在后面进行说明。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

制作U盘启动:

1.下载ubuntu的IOS镜像,这个可以在官方网站上面下载,这里也提供一个网盘地址:ubuntu64位12.04

2.准备一个格式化好的u盘。

3.利用U盘启动制作工具进行制作,这个大家比较熟知的有大白菜,老毛桃,UltroIOS等等,但是,博主在使用的过程中,表示这些都没有成功,不知道为什么。这里推荐一款简单好用的工具,USBWriter,使用简单,还不用安装。

4.制作完成之后,在你的机器上面进行安装就可以了。这里给出USBWriter的资源地址:USBWriter

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装jdk:

1.在我之前使用的ubuntu14.04的版本中,默认是安装openjdk1.8的(不知道从哪个版本开始的),关于openjdk和jdk的区别,据说只是缺少了一些代码,一般使用不会出现问题,但是为了保险起见,还是要安装jdk。

2.后来因为一个问题没有办法解决,所以我重新安装了12.04版本的ubuntu,这个版本就不会默认安装openjdk了,那么就自己安装了。

3.对于版本,最好是jdk1.6,这里提供一下Oracle官方下载地址:jdk1.6官方下载(不得不吐槽一下,现在下载还需要登录,难道等日后,java还要收费不成?),为了方便大家,这里提供一个下载地址:jdk1.6

3.对于安装jdk,我们可以使用手动安装,也可以使用自动下载安装。

4.对于自动下载安装,大家另行搜索,这里只提供一个手动安装的过程。大家参考这篇博客:安装jdk

遇到的问题:

Unpacking...
Checksumming...
Extracting...
./jre-6u32-linux-i586.bin: 86: ./jre-6u32-linux-i586.bin: ./install.sfx.5736: not found
Failed to extract the files. Please refer to the Troubleshooting section of the Installation Instructions on the download page for more information.

在安装的过程中,总是不成功,那是因为我之前下载的jdk是这样的:jdk-6u45-linux-ia64.bin,如果大家直接使用我提供的资源的话,应该不会出现这个问题。

我们看一下官方的jdk版本:

虽然,我不知道Linux Intel Itanium是干什么的,但是可以想象,我的机器大概是不适合这种linux的jdk版本的,相信,大多数系统也是不适合的。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装编译环境:

1.在编译之前,需要先安装一些东东,由于博主比较菜,还不知道安装的那些东西是干嘛的。

命令如下:

sudo apt-get install gnupg
flex bison gperf libsdl1.2-dev libesd0-dev

sudo apt-get
install libwxgtk2.6-dev squashfs-tools build-essential

sudo apt-get install zlib1g-dev
pngcrush schedtool ia32-libs libncurses5-dev

是一些编译库吧,博主不懂,也就不误人子弟了,这个大家用一行shell是一样的,我嫌太长,装起来也等的久,就分开了。安装编译环境的过程中,博主没有遇到什么问题,至少在12.04版本的ubuntu上面是没有的,如果你遇到,那么就只好自己具体解决了。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装编译环境过程中问题解决(由于在12.04版本中没有遇到什么问题,下面记录的问题是在14.04版本上面发生的)

1.正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

E: 未发现软件包 libwxgtk2.6-dev

E: 无法按照正则表达式 libwxgtk2.6-dev 找到任何软件包

解决:版本更改,2.6修改为2.8就可以了

2.正在读取软件包列表... 完成

正在分析软件包的依赖关系树

正在读取状态信息... 完成

现在没有可用的软件包 ia32-libs,但是它被其它的软件包引用了。

这可能意味着这个缺失的软件包可能已被废弃,

或者只能在其他发布源中找到

可是下列软件包取代了它:

lib32z1 lib32ncurses5 lib32bz2-1.0

解决:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

3.tar zxvf FileName.tar.gz

Ubuntu 解压错误 tar: 由于前次错误,将以上次的错误状态退出。

解决:出现这种情况,可以先考虑使用

gunzip FileName.gz

或者 gzip -d FileName.gz

命令把.tar.gz文件解压为.tar文件。

然后再使用tar xvf FileName.tar文件解压。

如果还是出现问题的话,就是用下面命令查看一下压缩包属性。

file XXXX.tar.gz

看看是bzip2,还是gzip什么的,然后再相应的解压吧。

可是结果还是出问题:没办法,只好在桌面上面使用归档管理器进行提取,然后再move到指定目录。

4.在ubuntu14.04没有解决的问题,但是在12.04没有出现的问题:大家去看我发表的帖子就好:http://bbs.csdn.net/topics/390955994

解决:未解决,通过重装系统版本解决。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

进行编译:

上面准备工作都完成了之后,可以使用下面的命令开始进行源码编译了:

source ./build/envsetup.sh

make

这个时候,你的shell命令应该在你的源码根目录,比如博主的是在:/usr/local/Android/Android2.3.7

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

编译过程中问题解决:

1.find:
`frameworks/base/frameworks/base/docs/html‘: No such file or directory

find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory

解决:在相应的位置建立相应的文件夹就可以了。find不会影响到编译的结果。

2.<command-line>:0:0:
warning: "_FORTIFY_SOURCE"
redefined [enabled by default]

解决:http://blog.csdn.net/vrix/article/details/8330135

3./usr/bin/ld cannot find -lz ,collect2: ld returned 1 exit status

解决:一般解决方式为:$ sudo apt-get install zlib1g-dev

但是我的显示已经为最新版本了

Installing lib32z1-dev got me past it

参考:    http://stackoverflow.com/questions/3373995/usr-bin-ld-cannot-find-lz

4.make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb]

解决:一般解决方式为:$sudo apt-get install libncurses5-dev

但是显示我已经为最新版本了

解决:sudo apt-get install lib32ncurses5-dev

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面就是等待了,知道编译成功,可能是因为我编译的为2.3.7的源码,比较小,所以我觉得速度还是挺快的,大概一个小时不到吧。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

运行模拟器:

export PATH=$PATH:/usr/local/Android/Android2.3.7/out/host/linux-x86/bin

export ANDROID_PRODUCT_OUT=/usr/local/Android/Android_2.3.7/out/target/product/generic

emulator

稍等一会...

模拟器运行成功了,很开心啊!~

对于编译其他的东西,比如linux内核等等之类,会在之后再以博客的形式发表出来!~good luck!

时间: 2025-01-14 09:29:42

菜鸟起飞:第一次在ubuntu上编译android源码的相关文章

【转】在Ubuntu下编译Android源码并运行Emulator

原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-get install sun-java5-jdk  或   $ sudo apt-get install sun-java6-jdk (donut 1.6)3.安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-ess

【转】Ubuntu10.04上编译Android源码(Build Android source in Ubuntu10.04 Platform)

原文网址:http://blog.csdn.net/chenyafei617/article/details/6570928 一.Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make .make snod .make kernel的作用,m.mm.mmm它们的作用以及区别. - make:                 编译源码,生成相应的系统镜像文件.             

【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法

[转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的libstdc++.so库. /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++ /usr/bin/ld: skipping incom

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

[原]编译Android源码过程中遇到的问题

编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编译Android源码的步骤:https://source.android.com/source/building-running.html 下面就是我遇到的一些问题: 1.Compile Android Source时JDK相关的错误: 错误1: target release 1.5 conflic

分享编译Android源码的全过程

通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):  sudo apt-get install build-essential sudo apt-get install make  sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install libc6-dev  sudo apt-get install flex  

Docker环境下编译android源码|编译可运行xposed

前言 因为我的电脑是Ubuntu18的版本,成功编译xposed刷入手机之后无法启动,检查了所有的环境,没有问题,发现可能是Ubuntu系统的兼容库的问题,但是我不可能重新安装系统吧,毕竟有点蠢,所以最好的方式就是在docker的Ubuntu容器中编译,统一环境问题,也可以隔离环境平时 工作开发环境,下面开始操作 安装配置docker docker加速,采用对国人友好的镜像地址 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,执行以下命令: 您可以配置 D

编译Android源码致命错误解决方案

编译Android源码致命错误解决方案 字数1506 阅读17447 评论0 喜欢3 相信各位和我一样正在研究android内核的朋友们在经过漫长的源码下载的等待后,喜悦的拿到了源代码开始编译.可是在编译过程中,也会和下载一样出现各种各样的不顺.在这里我记录了一下本人在编译过程中的所有问题,如有疏漏,欢迎朋友们指出.下面是按照正常编译流程记录的所需步骤和操作,可能遇到的问题会在后面讲述. 步骤一:初始化编译环境 首先进入android源码所在目录,然后在Linux终端执行以下命令来完成编译初始化

ubuntu下编译VLC源码

http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 5761人阅读 评论(0) 收藏 举报VLC 操作系统选择:http://old-releases.ubuntu.com/releases/14.04.0/ubuntu-14.04-desktop-amd64.iso sudo apt-get install已经安装了freescale的i.MX6Q的a