Android Studio无法找到有效的Jvm(与MAC OS相关)

211

我无法在Mac OS(10.10.1 - Yosemite)上启动Android Studio进行Android开发。

28个回答

354
打开Finder中的Android Studio应用程序包,并编辑Info.plist文件。将键JVMversion更改为1.6+,而不是1.6*。这对我起作用了!但请注意,在较新版本的Android Studio中不再建议这样做。请查看官方声明:“请注意:不要编辑Info.plist以选择不同的版本。那不仅会破坏应用程序签名,还会破坏您安装的未来的补丁更新。”Antonio Jose的答案是正确的。感谢aried3r!

15
我在我的 Mac 上将 1.6* 更改为 1.8*。 - Titi Wangsa bin Damhore
5
完成:这需要在 Info.plist 文件中完成。 - Henridv
7
虽然在旧版Android Studio中这是必要的,但现在不再推荐这样做。请参见官方声明:“请注意:不要编辑 Info.plist 来选择不同的版本。这将破坏应用程序签名,也会破坏将来安装的补丁更新。”Antonio Jose 的答案是正确的。 - aried3r
6
根据 Alonso 和 Shane 的回答,苹果公司的官方软件包起到了作用。不需要调整任何设置! - Justin Lawrence
6
“Wow 1.6+ 对我有效。他们更新后,我会下载一个新的应用程序!” - Neil Japhtha
显示剩余6条评论

174

4
我不明白为什么这不是被接受或正确的答案。这基本上解决了问题,而且避免你编辑任何文件。至少对于我的问题来说,由于在Yosemite中缺少Java而无法启动Android Studio,这个方法同样适用于Intellij 14。 - Andy
8
请先从Oracle下载并安装最新版本的Java虚拟机,网址为:https://www.java.com/en/download/index.jsp 。然后再从上面的链接下载并运行pkg文件,这样您将获得Java 8,并且启动功能仍能正常工作。 - Edward Tan
7
总之,对我来说在Mac OSX 10.10上起作用的方法是:1)从https://www.java.com/en/download/安装Java 8u25;2)安装Alonso在链接中提到的Java http://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US。 - Someone Somewhere
2
这个答案是官方推荐的方式(使用JRE 6运行Android Studio并使用JDK 7或8编译应用程序):http://tools.android.com/tech-docs/configuration/osx-jdk - Steffen
显示剩余6条评论

140

[更新]
这个问题已在Android Studio 1.1中得到解决。https://issuetracker.google.com/issues/37015035

在下一版本的Android Studio中,如果没有找到Java 6但找到了Java 7(或更高版本),则将使用该版本。由于字体呈现得到改善,我们仍然推荐使用Java 6运行Studio,但是如果例如只发现Java 8,则无需进行任何操作。

[更新结束]

来自Android Studio 1.0 RC3版本说明

从RC 3版本开始,我们有了一个更好的机制来定制所有三个平台上的启动器属性。您不应该编辑IDE安装目录中的任何文件。相反,您可以在以下目录中创建自己的.properties或.vmoptions文件来自定义属性。(在某些平台上以前就已经做到了,但需要您复制并更改整个文件的内容。通过最新的更改,这些属性现在是可添加的,因此您只需设置您关心的属性,其余属性将使用IDE安装的默认值)。

但是没有关于选项的说明。

经过一番搜索,我找到了这个:
调整Mac上Android Studio的VM选项
IntelliJ IDEA 14.0.0 Web Help/File IDEA.Properties

但是没有什么帮助。

幸运的是,按照1.0 RC3版本说明中所说,在Yosemite上使用环境变量解决了问题。

您还可以使用环境变量来指向其他位置的特定覆盖文件:
STUDIO_VM_OPTIONS,使用哪个vmoptions文件
STUDIO_PROPERTIES,使用哪个属性文件
STUDIO_JDK,使用哪个JDK运行studio

这有点棘手,因为Android Studio不是命令行应用程序,所以我必须使用一个AppleScript命令在登录时设置环境变量。更多信息请参见此处

这是我的命令行的launchctl命令。

launchctl setenv STUDIO_JDK /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk

以下是我的AppleScript脚本(记得将其保存为应用程序)

do shell script "launchctl setenv STUDIO_JDK /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk"

关于 launchctl,请参见此处


4
您可以通过 open -a Android\ Studio 命令行运行AS,这将允许您创建一个非常简单的shell脚本,以设置环境并启动AS。对我而言,这比使用launchctl和AppleScript更简单。 - tbm
请将此标记为新的已接受答案。我不希望其他人破坏他们的AndroidStudio安装:P - Axel Advento
3
实际上,有一种方法可以不运行AppleScript:编辑.bash_profile(如果该文件不存在,请创建一个新文件),将export STUDIO_JDK /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk放入其中,退出终端(或任何文本编辑器用于编辑此文件),然后运行Android Studio即可。已在OSX 10.10和Android 1.0.1上测试过。 - dumbfingers
我认为如果你有JDK 8,这是必要的。同时@ss1271是正确的,如果你想要更改或创建一个环境变量,你应该将它放在你的.bash_profile中。顺便说一句,第一次可能需要运行source .bash_profile(如果你不想重新启动)。 - Gerard
1
@gio 是的,你应该使用安装在你机器上的版本。顺便问一下,你正在使用最新的Android Studio吗?因为这个脚本不再必要了。 - Antonio Jose
显示剩余7条评论

21
请注意,这个变量允许您在OSX上使用Java 7运行Android Studio(通常从Info.plist中指定的版本选择Java 6): $ export STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk $ open /Applications/Android\ Studio.app 对我起作用。

export ANDROID_STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk 对我很有帮助。谢谢! - jlhonora
2
谢谢。这是Android网站提供的相同解决方案。这是链接:http://tools.android.com/tech-docs/configuration/osx-jdk - Daniel
1
这不是答案。官方答案是从apple.com安装Java 6(JRE,而不是JDK - JDK可以是Oracle的)。这就是Android Studio网站明确说明的。 - Ilya

14
< p > 在 Info.plist 中更改此键 < code > < p > 我已经更改自
<key>JVMVersion</key>
<string>1.6*</string>
<key>JVMVersion</key>
<string>1.8*</string>

现在它运行正常...

编辑:
根据hasternet和aried3r上述官方声明所述,Antonio Jose提供的解决方案是正确的。

谢谢!


请注意:不要编辑 Info.plist 以选择不同的版本。这不仅会破坏应用程序签名,还会影响未来的补丁更新安装。 - nitesh goel

12

作为一个新手用户,我花了一段时间才明白如何以正确的方式修复这个问题。在 Stack Overflow 上搜索和理解了许多答案后,我总结出以下需要遵循的步骤来修复此问题。

请注意:

尽管更新 Android Studio 的 Info.plist 是最简单的解决方案,但并不推荐也不是正确的修复方式。

官方声明 -“请注意:不要编辑 Info.plist 来选择不同版本。这不仅会破坏应用程序签名,还会破坏未来对安装的补丁更新。”

第一种解决方案: 如果您从命令行运行 Android Studio,则可以将以下两行添加到您的 .bash_profile 文件中。

$ export STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk

$ open /Applications/Android\ Studio.app
下一次打开终端时,您的 Android Studio 将自动启动。
第二种解决方案:如果您想通过 UI 来运行 Android Studio(通过单击图标),请按以下步骤进行:
1. 在 Mac 上打开脚本编辑器(可以在 Spotlight 中找到)。 2. 复制并粘贴以下行:
do shell script "launchctl setenv STUDIO_JDK /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk"
注意:根据您的版本更改 JDK 版本。要检查您正在使用哪个版本,请打开终端并运行以下命令。
java -version

3.现在保存(⌘+s)为文件格式:应用程序。最后打开系统偏好设置→用户与群组→登录项,并添加您刚创建的新应用程序。

  1. 注销并重新登录,或者您也可以手动运行该应用程序。

完成了。

参考资料:

Antonio Jose's answer

ruario's answer


1
如果你只是打开了那个应用程序,不需要重新启动,对吧? :) - yjsoon
当然可以。你也可以手动运行该应用程序。 - nitesh goel
1
@niteshgoel,感谢您提供的完整的一体化答案!我已经检查过了,正如您所指出的那样,不需要重新启动,只需要注销并重新登录即可。 :) - khyox
这不是答案。官方答案是从apple.com安装Java 6(JRE,而不是JDK - JDK可以是Oracle的)。这就是Android Studio网站明确说明的。 - Ilya

9

我也使用Mac OS X 10.10。为了解决这个问题。

  1. Open Android Studio application package content (by right click on Android Studio icon in Application folder)
  2. Open file Infor.plist
  3. Search and replace:

    <key> JVM version</key>
    <string>1.6*</string>
    

替换为:

    <key> JVM version</key>
    <string>1.6+</string>

就是这样!


请注意:不要编辑 Info.plist 以选择不同的版本。这不仅会破坏应用程序签名,还会影响未来的补丁更新安装。 - nitesh goel

6
在 Mac OS X Yosemite 上,只需安装以下内容:
Java SE Development Kit 8
以及
Java Version 8 Update 25
这就是全部,对我有效!

Java SE Development Kit 8 对我来说已经足够了。谢谢! - Mathijs

5
  1. 安装最新的JDK(当前为8u102)。
  2. 设置环境变量 STUDIO_JDK java_home 输出Java主目录,而 sed 剥离两个文件夹以获取jdk目录)

    launchctl setenv STUDIO_JDK `/usr/libexec/java_home -version 1.8 | sed 's/\/Contents\/Home//g'`

  3. 像平常一样启动Android Studio

在每次重启时设置STUDIO_JDK

上述步骤仅适用于当前会话。以下是如何创建一个plist文件,在/Library/LaunchDaemons中运行上述命令,以在每次启动时运行它:

sudo defaults write /Library/LaunchDaemons/com.google.studiojdk Label STUDIO_JDK
sudo defaults write /Library/LaunchDaemons/com.google.studiojdk ProgramArguments -array /bin/launchctl setenv STUDIO_JDK `/usr/libexec/java_home | sed 's/\/Contents\/Home//g'`
sudo defaults write /Library/LaunchDaemons/com.google.studiojdk RunAtLoad -bool TRUE

感谢http://www.dowdandassociates.com/blog/content/howto-set-an-environment-variable-in-mac-os-x-launchd-plist/介绍了plist技巧,可以在Mac OS X的launchd plist中设置环境变量。


3
在Android工具项目网站上,有一个很好的解释Mac OSX JDK Selection。它解决了我的问题。总之:
Android Studio需要两个不同的JDK:
- IDE本身运行的Java版本。 - 它用于获取Java编译器的JDK版本。
这两个可以(通常是)相同的,但您可以单独配置它们。特别是在OSX上,它们通常会有所不同。
而对于Yosemite(Mac OSX 10.10)问题:
首先,请确保您安装了最新版本的Java 6;在某些情况下,这已经解决了问题:http://support.apple.com/kb/DL1572 如果没有,请尝试运行最近版本的Java 7或Java 8,方法如上所述设置STUDIO_JDK。据报道,这已经解决了其他问题(虽然您将看到Java 8的字体呈现)。

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