java - 如何在 Mac 上使用较新的 JRE 或 JDK 运行 Android Studio?

标签 java macos android-studio

我尝试使用 JDK 13 运行 Android Studio,只是因为我觉得它必须比内置的 JDK 8 运行得更快。

根据documentation (我从 umang shukla's answer 找到),我们可以通过设置 STUDIO_JDK 来强制 Android Studio 使用嵌入式 JDK 以外的东西。

STUDIO_JDK

Sets the location of the JDK with which to run Studio. When you launch Android Studio, it checks the STUDIO_JDK, JDK_HOME, and JAVA_HOME environment variables in that order.

我就是这么做的:

$ export STUDIO_JDK=`/usr/libexec/java_home -v 13`
$ echo $STUDIO_JDK
/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
$ open /Applications/Android Studio 3.5.app/
$ ps ax | grep Android
 1198   ??  R      1:07.86 /Applications/Android Studio 3.5.app/Contents/MacOS/studio
 1269   ??  S      0:00.02 /Applications/Android Studio 3.5.app/Contents/bin/fsnotifier
 1300 s000  R+     0:00.00 grep Android
$ ps eww 1198
 PID   TT  STAT      TIME COMMAND
 1198   ??  S      1:46.13 /Applications/Android Studio 3.5.app/Contents/MacOS/studio ANDROID_HOME=/Users/hborders/Library/Android/sdk TERM_PROGRAM=Apple_Terminal JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home TMPDIR=/var/folders/r6/qtc_vgrx1xb2gqsg08y0tl000000gp/T/ __CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0 SHELL=/bin/bash _=/usr/bin/open HOME=/Users/hborders TERM_SESSION_ID=CA1F90D5-ABE9-427A-ACC5-EEE63AC66CAB SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.J9ll4GUN4M/Listeners Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.B3Rds8GPV9/Render TERM_PROGRAM_VERSION=421.2 SHLVL=1 PATH=/usr/local/bin:/Users/hborders/Library/Android/sdk/tools:/Users/hborders/Library/Android/sdk/platform-tools:/usr/local/opt/go/libexec/bin:/Users/hborders/go/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin DISPLAY=/private/tmp/com.apple.launchd.4O8kDH9XQS/org.macosforge.xquartz:0 TERM=xterm-256color LOGNAME=hborders XPC_SERVICE_NAME=com.google.android.studio.55476 LANG=en_US.UTF-8 GOROOT=/usr/local/opt/go/libexec GOPATH=/Users/hborders/go USER=hborders XPC_FLAGS=0x1 STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home PWD=/Users/hborders

但是,当我查看 Android Studio 的“收集故障排除信息”对话框时,我得到以下信息:

Build version: Android Studio 3.5.1 Build #AI-191.8026.42.35.5900203 September 25, 2019
Java version: 1.8.0_202-release-1483-b49-5587405x86_64
Operating System: Mac OS X (10.14.6, x86_64)
JVM version: OpenJDK 64-Bit Server VM JetBrains s.r.o

我也尝试这样启动 Android Studio:

$ /Applications/Android Studio 3.5.app/Contents/MacOS/studio

我得到了同样的结果。 I filed an Android Studio issue about this. Please star it.

有什么想法吗?

最佳答案

TLDR

不要尝试这样做。尝试更改 boot jdk 时 Android Studio 3.5.1 挂起。 I filed this in the Android Studio issue tracker. Please star it.

有人私下建议:

cmd+shift+a -> switch boot jdk

这确实改变了 Android Studio 的行为。然而,Android Studio 3.5.1卡在启动屏幕上。

Android Studio splash screen hangs with different boot jdk

当我尝试使用 Oracle JDK 13 启动它时,发生了这种情况:

java version "13.0.1" 2019-10-15
Java(TM) SE Runtime Environment (build 13.0.1+9)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

或甲骨文JDK 11 :

java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)

为了解决这个问题,我发现Android Studio存储了boot jdk ~/Library/Preferences/<PRODUCT><VERSION> on macOS 中的偏好(~/Library/Preferences/AndroidStudio3.5 在我的例子中)。

然后,我干脆删除了studio.jdk文件,Android Studio 再次正常启动。

关于java - 如何在 Mac 上使用较新的 JRE 或 JDK 运行 Android Studio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677216/

相关文章:

java - nGrinder WAR 抛出异常

linux - 使用 VPN 连接仅路由特定 IP 范围

c++ - Safari 和 getaddrinfo 设置

javascript - AVG(COLUMN_SCORE) 未写入 SQLite 数据库

android - MainActivity NoClassDefFoundError

Android Studio, keystore 因更新而丢失

java - 将 GWT 与 $(document).ready 集成

java - 已加载 JDBC MySQL 驱动程序,但无法通过 Spring 配置连接到 MySQL

java - 如何在java中制作没有长度的数组?

macos - 如何暂停/恢复 Python 脚本?