Android 如何指导Gradle从不同的位置使用Java?
我在Android Studio中构建测试应用程序,然后在事件日志中显示: Android Studio正在使用此JDK位置:C:\Program Files\Android\Android Studio\jre与Gradle不同 默认情况下使用:C:\ProgramFiles(x86)\Java\jdk1.8.0\U 181使用 不同的位置可能会产生多个Gradle守护进程,如果Gradle 任务在使用Android Studio时从命令行运行 然后给出了以下选项:Android 如何指导Gradle从不同的位置使用Java?,android,android-studio,gradle,android-gradle-plugin,Android,Android Studio,Gradle,Android Gradle Plugin,我在Android Studio中构建测试应用程序,然后在事件日志中显示: Android Studio正在使用此JDK位置:C:\Program Files\Android\Android Studio\jre与Gradle不同 默认情况下使用:C:\ProgramFiles(x86)\Java\jdk1.8.0\U 181使用 不同的位置可能会产生多个Gradle守护进程,如果Gradle 任务在使用Android Studio时从命令行运行 然后给出了以下选项: 更多信息 将Android
这 问题可能是由于守护进程的配置不正确造成的 例如,使用了无法识别的jvm选项。
请参阅 用户手册中关于守护程序的章节 进程命令行:C:\ProgramFiles(x86)\Java\jdk1.8.0\u 181\bin\Java.exe -Xmx1536m-Dfile.encoding=windows-1252-Duser.country=ZA-Duser.language=en-Duser.variant-cp C:\Users\{MyUserName}\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1\lib\gradle-launcher-5.4.1.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1 请阅读 要了解更多信息,请查看以下流程输出: 初始化时出错 VM无法为1572864KB对象堆保留足够的空间 有关更多详细信息,请参阅IDE日志(帮助|显示日志)(16秒166毫秒) 我检查了事件日志: 我认为以前它是这样做的: 指示gradle从C:/Program Files/Android/Android使用java 工作室/jre 现在它说: 指示gradle使用C:/Program文件中的java (x86)/Java/jdk1.8.0_181 如何将其恢复到原来的状态,以便我的应用程序可以再次构建
如果您对Android Studio有任何帮助/建议,我将不胜感激 文件>项目结构…>SDK位置(在左窗格上) 然后在底部有一个下拉列表:JDK位置: 然后我选择/浏览此目录: C:\ProgramFiles\Java\jdk1.8.0\U 181 Gradle Sync在那之后再次为我工作,但我仍然收到以下警告: Android Studio正在使用此JDK位置:C:\Program Files\Java\jdk1.8.0_181与Gradle使用的不同 默认值:C:\ProgramFiles(x86)\Java\jdk1.8.0\u 181。使用 如果执行Gradle任务,不同的位置可能会产生多个Gradle守护进程 在使用Android Studio时从命令行运行
转到文件、项目结构、SDK位置,并将JDK位置下拉列表更改为JAVA_主页
您需要更改/添加环境变量 了解如何更改/添加环境变量 现在添加/修改变量“JAVA_HOME”,并将路径设置为
C:\Program Files\Android\Android Studio\jre
注意:当您稍后要在不同的IDE中处理不同的Java项目时,可能需要再次将此变量更改为默认的Java位置(在本例中,可能是
C:/ProgramFiles(x86)/Java/jdk1.8.0_181
)Gradle显然正在使用我的本机Java安装(来自Oracle)而Android Studio则使用自己的版本
自从Android Studio升级到3.6.1之后,我一直忽略这个警告。
目前没有问题。事实上,我发布了新版本的应用程序,没有任何问题
如果这变得烦人,并且没有其他问题,您可以选择忽略将来的警告:只需按下警告并选择选项忽略将来与此警告相关的消息。Ubuntu 16.04 LTS,Android Studio 3.6
这就是我摆脱警告的原因:
1) 在您的计算机上找到AS启动器脚本studio.sh
,我的脚本位于:/opt/android-studio-3.x/bin
2) 在脚本中,您将看到以下行:
# ---------------------------------------------------------------------
# Locate a JDK installation directory which will be used to run the IDE.
# Try (in order): STUDIO_JDK, studio.jdk, ./jre64, JDK_HOME, JAVA_HOME, "java" in PATH.
# ---------------------------------------------------------------------
if [ -n "$STUDIO_JDK" -a -x "$STUDIO_JDK/bin/java" ]; then
JDK="$STUDIO_JDK"
fi
if [ -z "$JDK" -a -s "$HOME/.AndroidStudio3.6/config/studio.jdk" ]; then
USER_JRE=`"$CAT" $HOME/.AndroidStudio3.6/config/studio.jdk`
...
3) 如果由于某种原因,您无法将环境变量导出到启动器(就像我在xfce4会话中遇到的情况),您可以在studio.jdk
文件中写入所需的JAVA_HOME
值,该文件在我的系统中的位置与脚本一致,位于$HOME/.AndroidStudio3.6/config/studio.jdk
中
$ echo $JAVA_HOME > $HOME/.AndroidStudio3.6/config/studio.jdk
$ cat $HOME/.AndroidStudio3.6/config/studio.jdk
/usr/lib/jvm/java-8-oracle
4) 最后,通过从DE会话重新启动AS,您将看到文件->项目结构->SDK位置窗口下的JAVA_HOME
设置为上述值,并且AS和gradle应使用相同的JRE:
然后我单击了“不满意”按钮:“不再显示此警告”:/尝试了一下,然后得到了与我问题中相同的错误。我使用的是64位Windows。它无法保存jdk位置。当我返回此菜单时,总是有以前的值。这有助于切换到完整的Kotlin DSL Gradle构建。有人能解释Android Studio使用不同于Gradle的JDK意味着什么吗?除了gradle编译,Android Studio还需要JDK做什么?我相信IntellJ是用Java本身编写的,因此需要一个Java运行时(JRE)来运行,但这并不需要JDK本身。消息应该是Android Studio使用的JVM/jre与Gradle不同吗?或者说,与JDK Gradle使用的Java安装不同,使用的是JVM/jre?我相信Gradle既需要一个JVM来编写自己的代码,也需要一个JDK来编写编译器。那么真正的问题是什么呢?我猜真正的问题是Android Studio和Gradle可以运行o