Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何指导Gradle从不同的位置使用Java?_Android_Android Studio_Gradle_Android Gradle Plugin - Fatal编程技术网

Android 如何指导Gradle从不同的位置使用Java?

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

我在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 Studio设置为使用与Gradle和sync相同的JDK
  • 不要再次显示此警告
  • 我点击:

    将Android Studio设置为使用与Gradle和sync相同的JDK

    然后我的应用程序就不想再构建了

    这就是错误:

    梯度同步失败:无法启动守护进程。
    这 问题可能是由于守护进程的配置不正确造成的

    例如,使用了无法识别的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时从命令行运行

  • 更多信息
  • 将Android Studio设置为使用与Gradle和sync项目相同的JDK
  • 不要再次显示此警告

  • 转到文件、项目结构、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