1、Ubuntu 系统Ubuntu 14.04 LTS,
2、android源码来自于清华TUNA镜像源
http://aosp.tuna.tsinghua.edu.cn/android/
3、下载完android源码后,进行源码编译。根目录make
4、make发现错误,无法编译。报如下错误:
You asked for an OpenJDK 7 build but your version is
You are attempting to build with the incorrect version
等。有关SDK版本问题的。
需要你安装openJDK...................注意是openJDK 不是甲骨文公司的jdk
如果是ubuntu,进行sudo apt-get installopenjdk-7-jre
sudo apt-get installopenjdk-7-jdk
Fedora, OracleLinux, Red Hat Enterprise Linux, etc.
su -c "yum installjava-1.7.0-openjdk"
摘抄自:http://www.planetjdk.org/install/index.html
5、然后检查下java version
java version "1.7.0_101"
OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
注意这里OpenJDK
如果安装了但是版本没变:
那么你可以检查下环境变量:
sudo gedit /etc/profileexport
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH={JAVA_HOME}/bin:$PATH
下面命令可以配置java命令的软链接
sudo update-alternatives --install /usr/bin/java java /home/wuekzhu/download/jdk1.6.0_23/bin/java 1888
(将java的链接指向/home/wuekzhu/download/jdk1.6.0_23/bin/java)
下面命令可以选择java版本
sudo update-alternatives --config java
有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 自动模式
* 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 手动模式
2 /usr/lib/jvm/jdk1.8.0_65/bin/java 300 手动模式
要维持当前值[*]请按回车键,或者键入选择的编号:
6、然后进行编译
source build/envsetup.sh
生成各种命令
lauch XXXX 可以选择编译
make -j2 (2核编译-----)
7、编译错误
[1/2] choosing next stage
Choosing primary.ninja.in for next stage
[2/2] bootstrap out/soong/.bootstrap/build.ninja.in
[1/2] choosing next stage
Choosing main.ninja.in for next stage
[2/2] bootstrap out/soong/.bootstrap/build.ninja.in
ninja: no work to do.
Running kati to generate build-aosp_arm.ninja...
No need to regenerate ninja file
Starting build with ninja
ninja: Entering directory `.'
ninja: error: 'prebuilts/clang/host/linux-x86/clang-3016494/bin/clang++', needed by 'out/soong/.intermediates/external/libcxx/libc++/linux_x86_64_shared/libc++.so', missing and no known rule to make it
make: *** [ninja_wrapper] 错误 1
问题大概讲述:找不到包,进prebuilts/clang/host/linux-x86/目录发现没有clang-3016494目录
解决办法:进入根目录下面build/core/clang/versions.mk第二行改为:LLVM_PREBUILTS_VERSION ?= clang-2812033然后又遇到下面的问题:
out/soong/make_vars-aosp_arm.mk:31: LLVM_PREBUILTS_VERSION does not match between Make and Soong:
out/soong/make_vars-aosp_arm.mk:31: Make : clang-2812033
out/soong/make_vars-aosp_arm.mk:31: Soong: clang-3016494
out/soong/make_vars-aosp_arm.mk:37: LLVM_PREBUILTS_PATH does not match between Make and Soong:
out/soong/make_vars-aosp_arm.mk:37: Make : prebuilts/clang/host/linux-x86/clang-2812033/bin
out/soong/make_vars-aosp_arm.mk:37: Soong: prebuilts/clang/host/linux-x86/clang-3016494/bin
out/soong/make_vars-aosp_arm.mk:383: *** Soong variable check failed.
make: *** [out/build-aosp_arm.ninja] 错误 1
#### make failed to build some targets (01:22 (mm:ss)) ####
最后发现是源码没有下齐全,
repo forall -c 'git reset --hard; git clean -f -d -x'
git reset --hard 是將當前HEAD 重置,不會留下之前的痕跡。git clean 清除未追蹤的文件。d是目錄,f是文件。
然后编译又遇到错误:
发现openSDK1.7不够用啊!!!
那么好吧!还是先安装下opensdk1.8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
先清理下编译产生的文件:
make clobber 清理生成的文件和目录
然后编译又报错:找不到包!! 于是补足包:
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl-dev libesd0-dev
然后继续编译::::漫长等待
最后成功了。
然后想编译Android linux内核,暂时没有VPN,留待以后研究。