Ubuntu 12.04 编译 android 4.0

    记录学习中点点滴滴,与同道交流。

    在编译google android source 4.0源代码过程中,如果按照官方要求添加相应的包,正确配置JDK,编译是很少报错的。即使报错,google一下立马解决。由于本人第一次编译android srouce 官方源码,并且对Linux系统也不是很熟。摸索中遇到了不少问题,幸运的是,通过google还有查看log error日志,一个一个都解决了。 (做技术,熬夜太平凡了,伤不起).

1.关于编译google android 官方源代码问题:

    google android 官方源代码支持Linux和 MAC系统下载。一开始以为在“歧视”windows,也没怎么在意,用VMwareworkstation安装好 ubuntu后,根据android官网上的介绍的一步一步敲,顺利的下载到了andrdio 4.0.1源代码(加上隐藏文件,有9点几个G,悲剧的是,电信网下载不到了)。

    由于准备和同学共享源码,于是把虚拟机的android 4.0.1源码转移到windows7上,直接复制,后来弹出了几个提示,没怎么看,直接YES。

    现如今,准备在ubuntu 12.04上编译android4.0.1。报了一堆的错,缺失文件,具体提示都在这个文件夹中:/home/hzwy23/WORKING_DIRECTORY/external/iptables/include/linux/netfilter。

仔细看了log error日志提示,缺少:xt_mark.h xt_dscp.h 文件。进去这个目录后发现了 xt_MARK.H xt_DSCP.H.然后分别打开了这个两个文件,发现这两个文件中分别#include<linux/netfilter/xt_mark.h> #include<linux/netfilter/xt_dscp.h> 。顿时恍然大悟,之前把源码复制到windows 7中时,由于windows文件系统对文件名不区分大小写。即 HZWY23和hzwy23是同一个文件(打个比方)。想想xt_mark.h和xt_MARK.H在复制过程中,有个被覆盖了。

    我查看了下飞凌提供的2.3源码,找到相应的文件夹,发现里面文件已经被修改过了,在linux3.3内核中复制了xt_mark.h xt_dscp.h到/linux/netfilter/文件夹中,再次编译,发现关于libxt_mark.c的内容报错。没办法,之好进去看代码。看了一圈发现有个结构提很特别(没看到在哪里定义过),struct xt_mark_tginfo2这个结构体,在这个文件以及头文件xt_mark.hxt_MARK.H xtables.h 中均未定义,于是google了下这个结构体,在linux2.6.34 xt_mark.h中发现了这个定义。对比下我在linux3.3中复制的xt_mark.h发现,两个文件还真不一样,于是将linux2.6.34中的:struct xt_mark_tginfo2。复制到mark.h中,继续编译。OK。

    2.如果在编译过程中报了这个错误:
make: ***[out/target/common/obj/APPS/DeskClock_intermediates/classes-full-debug.jar]Error 41

恭喜你,按照下面来:(google baidu找了几天都没找到有人解决这个问题,本人纠结了2个晚上终于解决了,失眠几个晚上,伤不起啊)

   本人觉得对于初次接触linux系统的玩家来讲,JAVA环境没有正确配置带来的麻烦最不好解决。这样会导致一些莫名奇妙的问题。Ubuntu一般安装了OpenJDK这个,感觉不适合android source 编译。通过ubuntu software Centre下载 Eclipse时,一般会默认下载OpenJDK。为了解决JDK版本问题带来的莫名奇妙的问题,可以通过配置,统一下jdk

    在sun公司(现在是oracle公司了)下载jdk1.6(android 4.0只认 1.6其余的无效),解压到 /usr/lib/jvm 如果这个jvm文件夹中有其他jdk文件,先闪掉(这个可能就是之前的openjdk,或者别的)。在此以jdk1.6.0_30为例。

然后在终端中输入:

sudo vi /etc/environment

(在path后面添加)/usr/lib/jvm/jdk1.6.0_30/bin(换行继续)

CLASSPATH=”/usr/lib/jvm/jdk1.6.0_30/lib”

JAVA_HOME=”/usr/lib/jvm/jdk1.6.0_30 ”

保存退出。

在终端输入:

source /etc/environment

#sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_30/bin/java 300

#sudo update-alternatives --install/usr/bin/java java /usr/lib/jvm/jdk1.6.0_30/bin/javac 300

#sudo update-alternatives --config java (如果已经删除了/usr/lib/jvm文件夹下的openjdk,那么这条语句执行后,是不会有选择项的。表示系统只有sun jdk)

进入android源码包。

make clean

make clobber

source build/envsetup.sh

lunch full-eng

make -j4

等待。。。

顺利完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzwy23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值