Linux - 默认 java 版本为 8,Flutter 设置为 11
Linux - default java version is 8, set 11 for Flutter
在我的开发机器上:
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /home/michal/Android/Sdk
• Platform android-31, build-tools 30.0.2
• ANDROID_HOME = /home/michal/Android/Sdk
• Java binary at: /home/michal/android/studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
• All Android licenses accepted.
但是全局java版本是Java8:
java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-1-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
它是由 Android Studio 以某种方式设置的。但是,在我的构建服务器上,Flutter 使用默认的 1.8 java 版本:
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /home/jenkins/Android/Sdk
• Platform android-31, build-tools 30.0.2
• ANDROID_HOME = /home/jenkins/Android/Sdk
• Java binary at: /usr/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2-b11)
• All Android licenses accepted.
因此,针对 Android 12 的应用无法编译。
如何将 Java 版本设置为 11(在我的开发机器上已设置)仅适用于 Flutter?系统,默认java版本无法更改我无法更改JAVA_HOME变量或更改默认java版本,需要Java 8.
我无法在构建服务器上安装 Android Studio,我需要弄清楚配置的实际存储位置。
我想我需要设置 java 二进制路径而不更改 JAVA_HOME 环境变量。在哪里设置?
I can't change JAVA_HOME variable.
您可以在本地更改它。例如,在命令提示符下您可以这样做:
$ export JAVA_HOME=/new/setting
$ flutter ...
有了这个,您可以在 shell 初始化脚本(例如“~/.bashrc”)中定义一个 shell 别名或 shell 函数。
或者,您可以编写一个包装器脚本来做同样的事情;例如
#!/bin/sh
export JAVA_HOME=/new/setting
flutter "$@"
和运行而不是颤振。
以此类推
这更像是一种变通方法,但在我的情况下有效:
将我的 Android Studio 文件夹内容复制到开发机(我在 Linux,所以版本相同)
告诉 Flutter 我的 Android Studio 安装文件夹在哪里:
flutter config --android-studio-dir="path"
现在 Flutter 使用 Android Studio 附带的 Java,目前是 Java 11。但是我最初的问题是是否可以告诉 Flutter 哪个 Java 版本应该被使用(不使用环境变量 - 全局或每个 flutter
命令调用)仍然保持打开状态
在我的开发机器上:
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /home/michal/Android/Sdk
• Platform android-31, build-tools 30.0.2
• ANDROID_HOME = /home/michal/Android/Sdk
• Java binary at: /home/michal/android/studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
• All Android licenses accepted.
但是全局java版本是Java8:
java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-1-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
它是由 Android Studio 以某种方式设置的。但是,在我的构建服务器上,Flutter 使用默认的 1.8 java 版本:
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /home/jenkins/Android/Sdk
• Platform android-31, build-tools 30.0.2
• ANDROID_HOME = /home/jenkins/Android/Sdk
• Java binary at: /usr/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2-b11)
• All Android licenses accepted.
因此,针对 Android 12 的应用无法编译。
如何将 Java 版本设置为 11(在我的开发机器上已设置)仅适用于 Flutter?系统,默认java版本无法更改我无法更改JAVA_HOME变量或更改默认java版本,需要Java 8.
我无法在构建服务器上安装 Android Studio,我需要弄清楚配置的实际存储位置。
我想我需要设置 java 二进制路径而不更改 JAVA_HOME 环境变量。在哪里设置?
I can't change JAVA_HOME variable.
您可以在本地更改它。例如,在命令提示符下您可以这样做:
$ export JAVA_HOME=/new/setting
$ flutter ...
有了这个,您可以在 shell 初始化脚本(例如“~/.bashrc”)中定义一个 shell 别名或 shell 函数。
或者,您可以编写一个包装器脚本来做同样的事情;例如
#!/bin/sh
export JAVA_HOME=/new/setting
flutter "$@"
和运行而不是颤振。
以此类推
这更像是一种变通方法,但在我的情况下有效:
将我的 Android Studio 文件夹内容复制到开发机(我在 Linux,所以版本相同)
告诉 Flutter 我的 Android Studio 安装文件夹在哪里:
flutter config --android-studio-dir="path"
现在 Flutter 使用 Android Studio 附带的 Java,目前是 Java 11。但是我最初的问题是是否可以告诉 Flutter 哪个 Java 版本应该被使用(不使用环境变量 - 全局或每个 flutter
命令调用)仍然保持打开状态