android2.2编译,【Android源码】Ubuntu14.04编译Android2.2.1详细过程

下载和编译Android2.2源码

首先需要安装linux环境,这里我使用VMWare 安装了Ubuntu14.04

下载git和curl工具

apt install git-core curl配置git的name和email,否则后面下载时会提示配置

git config --global user.email "you@example.com"

git config --global user.name "Your Name"下载repo脚本

mkdir ~/bin

PATH=~/bin:$PATH

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

chmod a+x ~/bin/repo创建工作目录

mkdir Android_Code

cd Android_Code

初始化repo脚本

下面这种初始化方法表示下载最新的Android源码,地址我使用的是清华大学镜像,具体请参考

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

如果要下载某个特定的Android版本,则需要如下配置,Android版本可以自行查找

如我下载的Android2.2的某个版本

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-2.2.1_r1这里我遇到了无法连接到互联网的情况,可以将如下内容复制到你的~/.bashrc里

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'开始下载,注意下载时由于网络原因可能会中断,可以Ctrl+Z停止,然后继续执行如下下载命令。-j 标识启动的线程。Repo sync [-j n]

下载完成后可以看到如下目录

599becc5364c17ed96bae8c290c014d9.png

配置编译环境

编译Android2.2需要下载jdk5 ,下载地址为http://www.oracle.com/technetwork/java/archive-139210.html安装jdk并配置环境变量。

提前安装好下列依赖

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils xsltproc

安装Gcc 和g++ ,需要注意版本号。这里默认的版本号太高,需要降级,如问题4

执行编译

Source build/envsetup.sh选择需要编译的版本然后执行 make命令

Lunch

6a91d653fb8389e33c75677ab37d746d.png

问题1

由于ubuntu中可能已经包含了jdk,所以输入java –version 时会提示如下信息。

9f46b54124d5708dd35cda1a5b71ab47.png

解决方法为输入如下命令,注意命令中的路径为我安装jdk的路径

sudo update-alternatives --install /usr/bin/java java /home/limeng/jdk1.5.0_22/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /home/limeng/jdk1.5.0_22/bin/javac 300

sudo update-alternatives --config java

问题2:

3f8d7c694b4cb8244de6cc4dcec0dc76.png

解决办法

Cd /usr/bin执行下列命令,路径为你安装jdk的路径

Sudo ln -s -f /home/limeng/jdk1.5.0_22/bin/jar如果提示javah:commond not found,和上面修改方法类似

Sudo ln -s -f /home/limeng/jdk1.5.0_22/bin/javah

问题3:

261595ec5650056bb3a2971dfdbc7e4c.png

这个错误是gcc和g++版本不兼容导致的,也有可能是安装完gcc没有安装g++

首先安装gcc和g++及一些依赖包

sudo apt-get install build-essential

sudo apt-get install g++

安装完成后使用 gcc -v 查看版本,然后使用g++ -v 查看版本,保证版本一致

如果系统中安装有多个版本的gcc    那么就需要ln一下,执行命令如下

sudo ln -sf g++-4.3 /usr/bin/g++

sudo ln -sf g++-4.3 /usr/bin/i686-linux-gnu-g++

sudo ln -sf gcc-4.3 /usr/bin/gcc

sudo ln -sf gcov-4.3 /usr/bin/gcov

sudo ln -sf gcc-4.3 /usr/bin/i686-linux-gnu-gcc

问题4:

6765faf1058d8b2ea966df34e846f375.png

解决方法:

1、首先安装gcc4.4和g++4.4

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

2、gcc和g++的降级

gcc降级:

sudo rm -rf /usr/bin/gcc

sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

gcc -v

g++降级

sudo rm -rf /usr/bin/g++

sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

g++ -v

问题5:

Unknown parameter a interfaceName fortags/attrs

make: ***

[out/target/product/eve/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/JSHTMLElementWrapperFactory.h]

Error

255

make: *** Waiting for unfinished jobs....

Unknown parameter a interfaceName fortags/attrs

make: ***

[out/target/product/eve/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/HTMLElementFactory.h]

Error

255

Unknown parameter a interfaceName fortags/attrs

make: ***

[out/target/product/eve/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/HTMLNames.h]

Error

255

解决方法:

如下修改文件WebCore/dom/make_names.pl

my $preprocessor = "/usr/bin/gcc -E -P -x c++";

my $preprocessor = "/usr/bin/gcc -E -x c++";

问题6:

748805c59cb57f22b7cf03e6696afc08.png

原因分析:

系统编译环境缺少两个库文件Xlib.h与libx11

解决办法:

直接通过下面两个命令来安装缺失的文件库。

apt-file search Xlib.h

问题7:

b92092ada41ebe88d59af4f4fce14eab.png

解决方法:

sudo apt-get install g++-4.4-multilib

问题8:

make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/

android/skin/window.o] Error 1

解决:

sudo apt-get install libx11-dev

问题9:

197c50db2cd1dd5ede4a19e14b03ea9c.png

apt-get install zlib1g-dev (没管用)

apt-get install lib32z1-dev

问题10:

a94cdbe328fd254946fb76cf20c9e06a.png

sudo apt-get install libncurses5-dev

sudo ln -s/usr/lib/x86_64-linux-gnu/libncurses.so /usr/lib/libncurses.so

我按上面这样执行了一下,又报下面的错误

error while loading shared libraries:libncurses.so.4: cannot open shared

object file: No such file or directory

ls /usr/lib/libncu*  查看有没有这个库,结果如下:

/usr/lib/libncurses.a   /usr/lib/libncurses.so.5

/usr/lib/libncurses.so  /usr/lib/libncurses.so.5.3

可见虽然没有libncurses.so.4,但有libncurses.so.5,是可以向下兼容的,建一个链接

ln -s /usr/lib/libncurses.so.5.3 /usr/lib/libncurses.so.4

问题11:

8718e398b811d2cab1568b091835df06.png

解决方法:修改./framework/base/tools/aapt/Android.mk文件

LOCAL_LDLIBS := -lz

ifeq ($(HOST_OS),linux)

-LOCAL_LDLIBS += -lrt

+LOCAL_LDLIBS += -lrt -lpthread

endif

ifeq ($(HOST_OS),windows)

其他类似的如framework/base/tool/localize/修改Android.mk

make: ***[out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize]

问题12

3fe91323bb070118b85efbdd64326e4a.png

解决方法:

sudo apt-get install libswitch-perl

问题13

80dce990e7493b6dbe4d845b82780be8.png

Cd /usr/bin/

sudo ln -s -f /home/limeng/jdk/jdk1.5.0_22/bin/javadoc

问题14 运行模拟器报错

ba2e3f1f83477bd65171768c5ecbac86.png

sudo apt-add-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"

sudo apt-get update

sudo apt-get install libsdl1.2debian:i386

终于运行成功了!中间差点都放弃了,弄了好久终于编译成功。

c333273e7a712d50703f9d80b0227d69.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值