由于java

时间:2017-06-28 18:27:26

标签: android c build openjdk

我有ubuntu 14.04,我正在尝试为BBB构建android。我得到了BBB android并访问了这个网站以获得正确的java。

我从这个网站上获取了android源代码

http://bbbandroid.sourceforge.net/build.html

然后按照此站点的步骤进行java,

https://source.android.com/source/initializing#for-ubuntu-14-04

我按照网站的说法做了。

然后 make -j4 给出了这个构建错误,

============================================
Checking build tools versions...
************************************************************
You are attempting to build with an unsupported JDK.

You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
    https://source.android.com/source/download.html
************************************************************
build/core/main.mk:152: *** stop.  Stop.

然后我做了这个

**java -version**
openjdk version "1.8.0_45-internal"
OpenJDK Runtime Environment (build 1.8.0_45-internal-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)

**sudo update-alternatives --config java**

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

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

**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-8-openjdk-amd64/bin/javac   1081      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/bin/javac   1061      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac   1081      manual mode

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

我再次检查了 java -version

openjdk version "1.8.0_45-internal"
OpenJDK Runtime Environment (build 1.8.0_45-internal-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)

它和以前一样。

  1. 这里有什么问题?
  2. google的android,oracle jdk,sun jdk或open jdk究竟支持什么?

2 个答案:

答案 0 :(得分:1)

您需要获取Sun / Oracle JDK,并且您当前正在使用OpenJDK。

Sun / Oracle JDK是受JDK支持的。 (Sun归Oracle所有)

makefile输出回答了你的问题。它必须检查并强制使用Sun / Oracle JDK。

  

您使用OpenJDK但仅支持Sun / Oracle JDK。

     

请按照机器设置说明进行操作       https://source.android.com/source/download.html

您需要安装Sun / Oracle JDK然后运行

sudo update-alternatives --config java

选择新安装的版本。

答案 1 :(得分:0)

我认为我可以通过重新启动计算机make来解决此错误,并且该错误由于未知原因而消失了。但是现在当我尝试启动模拟器时,我发现自己非常荒谬。

需要重新配置资源以使仿真器在正确的环境see here

下运行
xb@dnxb:~/Downloads/android_src/hole$ . build/envsetup.sh
xb@dnxb:~/Downloads/android_src/hole$ lunch aosp_bullhead-userdebug

现在运行模拟器:

xb@dnxb:~/Downloads/android_src/hole$ emulator -sysdir out/target/product/generic/ -system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -data out/target/product/generic/userdata.img -kernel prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -memory 2048
emulator: ERROR: Can't access ANDROID_PRODUCT_OUT as '/home/xiaobai/Downloads/android_src/hole/out/target/product/bullhead'
You need to build the Android system before launching the emulator
xb@dnxb:~/Downloads/android_src/hole$

我刚刚意识到我只有/home/xiaobai/Downloads/android_src/hole/out/target/product/generic/,没有bullhead(Nexus 5X)。

现在,我知道重启后上一次成功的原因,这是因为它使用默认的通用午餐菜单aosp_arm-eng构建,因为我没有重做步骤. build/envsetup.sh和{{1 }},然后重新运行lunch aosp_bullhead-userdebug

我可以看到我的make设置了此/etc/environment,所以JAVA_HOME永远无法工作,因为sudo update-alternatives --config java是Oracle / Sun,而不是Open JDK(我的情况与OP,是否需要Oracle / Sun或OpenJDK之一取决于午餐菜单):

/usr/lib/jvm/jdk1.8.0_131/

修改$ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$PATH" JAVA_HOME="/usr/lib/jvm/jdk1.8.0_131/" 到openjdk路径(在Ubuntu中,可以使用/etc/environment下载,然后使用sudo apt-get install openjdk-8-jdk找到路径),打开一个新的Tab Shell会话,重做dpkg -L openjdk-8-jdk. build/envsetup.shlunch aosp_bullhead-userdebug,现在可以正常使用了,而且没有jdk错误。