[英]building android error java version
我是構建 android 操作系統的新手。
我使用 Ubuntu 14.04 LTS 和 JDK 8。
envsetup.sh 給出:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-85-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=MASTER
OUT_DIR=out
============================================
我嘗試用make -J4編譯
我得到了愚蠢的錯誤:
============================================
You asked for an OpenJDK 7 build but your version is
java version "1.8.0_92" Java(TM) SE Runtime Environment (build 1.8.0_92-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode).
************************************************************
build/core/main.mk:220: *** stop.
make: *** [out/build-aosp_arm.ninja] Erreur 1
============================================
因此,我將 JDK 更改為版本 7,但出現相同的錯誤但已反轉:
============================================
You asked for an OpenJDK 8 build but your version is
java version "1.7.x" Java(TM) SE Runtime Environment (build 1.7.x) Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode).
************************************************************
那么什么是 pb 呢?
我該如何解決?
感謝您的幫助
我知道這個線程很舊,但我今天正在使用 Android 6,所以我遇到了同樣的問題......對我來說,這有幫助:
如果你想強制使用 Java 8,你可以使用這個:
export EXPERIMENTAL_USE_JAVA8=1
然后再次制作:
m
但是,顧名思義,它是實驗性的,因此不推薦。
對我來說(Ubuntu 18.04.1),我必須下載 Java 7( https://jdk.java.net/java-se-ri/7 )和:
cd /usr/lib/jvm/
sudo tar zxf /tmp/openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz
sudo chown root:root java-se-7u75-ri -R
以上將創建/usr/lib/jvm/java-se-7u75-ri
並將其設置為由用戶和組root
擁有。
現在將它添加到PATH
,如https://source.android.com/setup/build/building#wrong-java-version 中所述:
[...] 在路徑開頭添加正確的 JDK 或刪除有問題的 JDK。
export PATH="/usr/lib/jvm/java-se-7u75-ri/bin:$PATH"
我還必須修補build/core/main.mk
:
diff --git a/core/main.mk b/core/main.mk
index a6f829ab6..97690add0 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -153,7 +153,7 @@ javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.8[\. "$$]')
else # default
required_version := "1.7.x"
required_javac_version := "1.7"
-java_version := $(shell echo '$(java_version_str)' | grep '^java .*[ "]1\.7[\. "$$]')
+java_version := $(shell echo '$(java_version_str)' | grep '^openjdk .*[ "]1\.7[\. "$$]')
javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.7[\. "$$]')
endif # if EXPERIMENTAL_USE_JAVA8
注意它是grep
'ing for '^java .*[ "]1\\.7[\\. "$$]'
然后我把它改成了'^openjdk .*[ "]1\\.7[\\. "$$]'
。
在那之后,我發出了m
再次make。
希望這可以幫助其他人。 :)
您要求OpenJDK 8版本,但您的版本是java版本“1.7.x”Java(TM)SE運行時環境(版本1.7.x)Java HotSpot(TM)
您需要Java 7,如錯誤消息狀態。 下載OpenJdk 7,然后安裝它。 然后你需要
sudo update-alternatives --config java
sudo update-alternatives --config javac
在這兩個版本上選擇1.7或7。 谷歌和XDA已經涵蓋了這個...... Java-8將用於Android N的未來,但對於KK和MM,你需要7。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.