Android 5.0源码编译问题

转载: http://blog.csdn.net/shineflowers/article/details/41545057

 

环境设置

为了方便管理多个java版本,我们使用update-alternatives

比如这里有两个JDK版本

/opt/jdk1.6.0_30/ 和 /usr/lib/jvm/java-7-openjdk-amd64 为了方便切换,可以按如下操作

安装

sudo update-alternatives --install /usr/bin/java java /opt/jdk1.6.0_30/bin/java  50

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java  100

查询

sudo update-alternatives  --display   java

删除

sudo update-alternatives --remove java  /opt/jdk1.6.0_30/bin/java

切换

sudo update-alternatives --config  java

同时需要设置一下环境变量,这里我修改的是 ~/.bashrc

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/jre/bin/java::")
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=${JAVA_HOME}/bin:${PATH}:$JRE_HOME/bin

因为/usr/bin/java下面的仅仅是一个软连接,update-alternatives可以修改这个软连接指向的目标文件

 

编译错误问题解决

 

如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是从别人那拷贝,然后自己编译,那么通常会出现下面的错误:

No rule to make target 'external/chromium_org/third_party/angle/.git/index', need by .....

进入相应的目录,发现在angle目录下根 本没有.git的目录,这个也可以理解,因为不是自己通过repo和git直接从官网download,所以没有.git目录(这个目录是git的管理目 录,跟.svn的作用一样)。

解决办法有两个:

一、 在angile下创建.git目录,然后再.git目录中touch一个名为index的文件

cd external/chromium_org/third_party/angle/

mkdir .git

cd .git

touch index

二、不让源码编译.git/index的部分

具体修改如下:

将external/chromium_org/third_party/angle/src/commit_id.target.linux-arm.mk文件中关于index的部分注释掉:

原始部分(原始文件中下面绿色标出的部分写在了同一行)

......

$(gyp_shared_intermediate_dir)/angle/id/commit.h: $(gyp_shared_intermediate_dir)/angle/commit_id.py $(LOCAL_PATH)/third_party/angle/.git/index

$(GYP_TARGET_DEPENDENCIES)

......

改成

......

$(gyp_shared_intermediate_dir)/angle/id/commit.h: $(gyp_shared_intermediate_dir)/angle/commit_id.py 

#$(LOCAL_PATH)/third_party/angle/.git/index$(GYP_TARGET_DEPENDENCIES)

......

这样就能让源码不编译.git下面的index部分,编译就能通过,亲测成功!

 

posted @ 2015-01-01 23:27  摩斯电码  阅读(1160)  评论(0编辑  收藏  举报