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部分,编译就能通过,亲测成功!
本文来自博客园,作者:摩斯电码,未经同意,禁止转载