報錯
使用 Terminal 執行命令,報錯:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'StringFog'.
> Could not resolve all files for configuration ':classpath'.
> Could not resolve com.android.tools.build:gradle:8.0.0.
Required by:
project :
> No matching variant of com.android.tools.build:gradle:8.0.0 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.0' but:
- Variant 'apiElements' capability com.android.tools.build:gradle:8.0.0 declares a library, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component for use during compile-time, compatible with Java 11 and the consumer needed a component for use during runtime, compatible with Java 8
- Other compatible attribute:
- Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
- Variant 'javadocElements' capability com.android.tools.build:gradle:8.0.0 declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its target Java version (required compatibility with Java 8)
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
- Variant 'runtimeElements' capability com.android.tools.build:gradle:8.0.0 declares a library for use during runtime, packaged as a jar, and its dependencies declared externally:
- Incompatible because this component declares a component, compatible with Java 11 and the consumer needed a component, compatible with Java 8
- Other compatible attribute:
- Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
- Variant 'sourcesElements' capability com.android.tools.build:gradle:8.0.0 declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its target Java version (required compatibility with Java 8)
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
> Could not resolve
--------------------略
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 857ms
重點為 Incompatible because this component declares a component, compatible with Java 11 and the consumer needed a component, compatible with Java 8
。
應該是 jdk 版本不對。
但是查資料,在 ide 修改 Gradle 的 jdk 為 11、17 都無效。
解決歷程
- 在 Terminal 使用命令
java -version
可以顯示 jdk 11。但是轉念一想我係統變數 JAVA_HOME 配的 1.8,蠻奇怪的,會不會有什麼衝突。 - 修改系統變數 JAVA_HOME 為 jdk 11 版本,以及 Path 變數裡的 bin 路徑。
- 測試正常
- 應用打包會提示
Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
。 - 這次使用 IDE 的設定,開啟設定搜尋 Terminal,在 Project Setting 裡設定終端的環境變數:Environment variables: JAVA_HOME=E:/Program Files/Android/Android Studio/jbr,這個是 ide 自帶的 17 jdk。
- 命令執行正常。
done.