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

3

我想用JDK 13运行Android Studio,因为我觉得它一定比内置的JDK 8更快。

根据文档(我是从umang shukla 的回答中找到的),我们可以通过设置 STUDIO_JDK 来强制 Android Studio 使用其他 JDK。

STUDIO_JDK

设置运行 Studio 所需的 JDK 的位置。启动 Android Studio 时,它按照顺序检查 STUDIO_JDK, JDK_HOMEJAVA_HOME 环境变量。

然后我就这样做了:

$ 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

我得到了相同的结果。 我在Android Studio问题追踪中提交了一个问题,请为它加星。

有什么想法吗?


出于好奇,是什么让你觉得它“必须比JDK 8运行得更快”? - itwasntme
由于目标设备只能执行Java 6、7或8字节码,因此进展很小。购买新电脑可能会更快地运行它,而不是尝试运行较新的JDK。 - Martin Zeitler
@MartinZeitler,在新版本上运行任何Java IDE真的有优势吗? 编译后的代码针对定义的版本,因此对于编写的程序没有影响。 JRE运行字节码,较新的JRE / JDK版本意味着字节码可以使用略有不同的结构/过程,但是如果程序(在我们的情况下是IDE)旨在使用版本X,则不应使用X + 1的优势。放弃这一切,我们仍然会发现Java程序取决于特定平台的JDK / JRE实现。 - itwasntme
@itwasntme 源/目标兼容模式可以为javaCompile任务设置,虽然JDK 8可能目前是推荐的版本;Android Studio仅支持Java 8功能的子集,请参见此处 - Martin Zeitler
@MartinZeitler(已阅读)我认为这并没有回答我的问题。已经编译好的针对版本X的程序,如果在版本X+1(或+2,只是一个示例)上运行,将不会获得任何优势。而这里的问题不是关于编写程序/应用程序,而是关于IDE本身,正如你所说的,只有“新电脑可能会更快地运行它”。 - itwasntme
我认为JDK 13不会对我使用Android Studio制作的Android应用程序的速度产生任何影响。但我确信JDK 13会比JDK 8更快地运行Android Studio本身,因为JDK 13肯定会拥有更好的本地JIT编译器和垃圾收集器。 - Heath Borders
2个回答

2
TLDR: 不要尝试更改“boot jdk”,因为Android Studio 3.5.1会挂起。有人私下建议使用“cmd+shift+a” -> “switch boot jdk”命令,但这仍然导致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)

或者是 Oracle 的 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 在 macOS 中将 boot jdk 首选项存储在 ~/Library/Preferences/<PRODUCT><VERSION>(我的情况下是~/Library/Preferences/AndroidStudio3.5 中。然后,我只需删除 studio.jdk 文件,Android Studio 就能正常启动了。

值得一提的是,第一次我尝试完全相同的操作时,结果完全一样:启动画面卡住了。我刚刚再试了一次(因为AS 3.6字体渲染很糟糕),这次成功了!AS现在在标准Java上运行,字体渲染正确。 - G. Blake Meike
它是否已经开始与Android Studio 3.6一起工作了?如果是,请考虑在我的Google问题上发表评论:https://issuetracker.google.com/issues/143824143 - Heath Borders
很遗憾,没有这样的解决方法。3.6版本在启动屏幕上卡住了,就像你描述的那样。我按照你的描述删除了studio.jdk文件。巧合的是,大约一周后我再次运行了启动开关,然后它就起作用了。我不知道中间发生了什么改变。 - G. Blake Meike
这在3.6.1版本仍然发生。 - Heath Borders

0

是的,它确实会!另一方面,正如@Heath所指出的那样,遵循这些说明将导致AS在启动画面处挂起... - G. Blake Meike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接