Android 5.0 构建错误 Java 版本问题

Android 5.0 build errors with Java version issue

我当前的 java 版本 运行ning 在我的 Ubuntu 14.04 上是

java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

我输入了更改 java 版本的命令

sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
  ------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
* 1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1         manual mode

Press enter to keep the current choice[*], or type selection number: 1
test@test-ZX-530:/media/test/SSD/N7$ sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                         Priority   Status
  ------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071      auto mode
* 1            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071      manual mode
  2            /usr/lib/jvm/java-7-oracle/bin/javac          1         manual mode

Press enter to keep the current choice[*], or type selection number: 1

配置后,java-version 没有改变。

当我尝试构建 Android 5.0 时,发生错误并显示以下错误消息:

============================================
Checking build tools versions...
************************************************************
You asked for an OpenJDK 7 build but your version is
java version "1.7.0_72" Java(TM) SE Runtime Environment (build 1.7.0_72-b14) Java     HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode).
************************************************************
build/core/main.mk:191: *** stop. Stop.

#### make failed to build some targets  ####

对此有什么想法吗?谢谢!

============================================= =====================================

我找到了这个问题的问题。

当我运行

时java版本是Openjdk
. build/envsetup.sh

然而,当我运行

lunch aosp_flo-userdebug

java 版本切换回 Java SE。

如果您有任何想法,请告诉我

谢谢

============================================= ==============================

嗨,

lunch aosp_flo-userdebug

我认为此命令会检查我的配置并切换回 Java SE jdk 版本。

在 运行 执行此命令并再次导出我的 OpenJDK 路径后,使构建工作正常。

构建 Kitkat 需要 Sun/Oracle JDK 6 版本,构建 Lollipop 需要 OpenJDK 7。目前,我的 Ubuntu 上有这两个项目。我使用脚本来切换 JDK 版本,它可以工作。

把jdk_switch.sh放在我的~目录下运行下面命令切换jdk版本:

$ . ./jdk_switch.sh jdk7
$ . ./jdk_switch.sh jdk6

JDK的路径是:

/usr/lib/jvm/java-6-oracle/
/usr/lib/jvm/java-7-openjdk-amd64/

jdk_switch.sh内容:

#!/bin/bash
case  in
    jdk6)
 export JAVA_HOME=/usr/lib/jvm/java-6-oracle/
 ;;
    jdk7)
 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
 ;;
    *)
 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
 ;;
esac

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

java -version

打开JDK 7版本是:

java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

对于您的情况,导出 PATH 和 CLASSPATH 可能会有所帮助。或者只使用一个简单的 bash 脚本。希望对您有所帮助。

它对我有用,但你需要注意. ./jdk_switch.sh jdk7,你需要在这个终端设置环境所以你不能./jdk_switch.sh jdk7,设置后。仔细检查您的环境:env|grep java.

build/core/main.mk 说:

# For Java 1.7, we require OpenJDK on linux and Oracle JDK on Mac OS.
requires_openjdk := false
ifeq ($(HOST_OS), linux)
requires_openjdk := true
endif

因此 Android 6 基于 linux 构建需要 OpenJDK 1.7,它在 Ubuntu 16.04 存储库中不再可用...

我有几个解决方案:

仅 ./script 表示:运行 该脚本仅此而已。

"../script" 等于 "source ./script":每次导出都将在您当前的 bash 环境中..

就运行 $ 导出 JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 午餐命令前。 它对我有用