编译Android源码遇到的一个问题

  这是我在CSDN上写的第一个博客,虽然是一个简单的内容,但是希望这是一个良好的开端。本人接触Android开发也已经有一年时间了,仍处于入门阶段,希望能通过写博客的方式来督促自己不断进步。

  接触Android开发接近一年,还从未下载编译过源码。恰逢最近公司新发了台式机,我又动了下载、编译源码的念头。编译源码的教程在网站http://source.android.com/source/downloading.html即可看到,不过需要翻墙。教程也比较简单,跟着教程一步步走就好了。不过下载非常费劲,我下载的是5.1.1版本的,一共51G,下载了半个多星期。下载的时候经常因为网络不稳定(VPN不稳定)而导致中断。遇到这种情况只需要简单写一个脚本,在中断之后再自动启动就好了,代码如下。

#!/bin/bash  
echo "======start repo sync======"  
repo sync  
while [ $? = 1 ]; 
do  
echo “======sync failed, re-sync again======”  
sleep 3  
repo sync  
done

  经过了无限等待,终于下完了5.1.1的源码,总共51G!然后就开始编译了,编译也跟着http://source.android.com/source/building-running.html教程走就好。我在编译的时候遇到了一个有意思的问题。Android源码的编译脚本会检查当前JDK版本,我的Java版本是正确的java version "1.7.0_79",网上要求的也是1.7.X,但是我在make之后,总是会提示我的JDK版本不正确。经过查看了编译脚本代码发现,java_version := $(shell echo '$(java_version_str)' | grep '^java .*[ "]1\.7[\. "$$]'),其实它是通过简单的正则匹配来检查JDK版本的。在我的机器上出现这个问题的原因在于在命令行输入java -version 的时候,会输入以下内容。

Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

  也就是说在java version "1.7.0_79"之前多了一行内容,正则匹配的时候匹配到这一行了,于是认为我的JDK版本不正确。在Google上找了相关问题了以后,发现上面这一行没办法消除,详情可参考http://stackoverflow.com/questions/11683715/suppressing-the-picked-up-java-options-message。于是我没办法,只能把Android编译脚本中$(error stop)给注释掉。然后就可以开始正常编译了。。。

  不说了,电脑卡得要死了。。。i7处理器也吃力啊,8个CPU的使用率全都100%。目测两个小时以内应该能编译完成。



=========================更新分割线======================

  我还是太年轻啊,我以为注释掉编译脚本中对于 JDK 版本校验就没问题,但是编译了一个半小时之后就出错了,报的错还是跟Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar相关的。然后又上 stackoverflow 上搜了一下,在http://stackoverflow.com/questions/26074446/picked-up-java-tool-options-javaagent-usr-share-java-jayatanaag-jar-when-st找到了解决办法,通过  sudo apt-get remove jayatana 解决了 java -version 出现Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 的问题。然后再重新编译,成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值