首页 > 解决方案 > 如何使用 Java 8 在 Android 和桌面 (IntelliJ 2018 CE /Gradle) 上使用 libGDX 进行开发

问题描述

慢慢学习gradle。(对我而言)排除 IDE 错误并从命令行运行我的项目至关重要。这让我发现我的路径指的是 JRE 而不是 JDK;我收到一条错误消息,指出 tools.jar 不在路径上,就是这样。

但是,当我执行gradlew desktop:debug.

因此,这个问题与我最近升级到 2018 版本的 IntelliJ 有关。2017 版运行良好,有一个很大的免责声明,我不是,实际上当时使用的是 Java8 lambda。搬到 2018 年,我觉得创建一个新的 libGDX(我知道的针对多个平台的最佳方式)项目来将我的所有文件转储到而不是调试我得到的所有(通常无用的)堆栈跟踪更容易。

开箱即用,我对 gradle 进行了最少的进一步修改,以使桌面版本正常工作。我真的不想重复这一点,因为我选择了一个新名称,这意味着大量的编辑和破坏。当谈到在 Android 上部署时,我陷入了困境。

需要对 Gradle 版本和 gradle 文件进行哪些修改才能使 Android 构建工作?对于奖励积分,为什么显然涉及 4 个不同版本的 gradle?

标签: androidgradleintellij-ideajava-8libgdx

解决方案


在我的顶级 build.gradle 中,默认情况下我有

构建脚本 {
    依赖{
        类路径'com.android.tools.build:gradle:2.2.0'
    }
...

我不得不改成

构建脚本 {
    依赖{
        类路径'com.android.tools.build:gradle:3.1.1'
    }
...

并扩展:

构建脚本 {
...
    存储库{
        ...
        行家{
            网址“https://maven.google.com/”
            名称“谷歌”
        }
    }

接下来,Lint 和其他来源导致我将 gradle/wrapper/gradle-wrapper.properties 的一行从

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

在我的 android 级别 build.gradle 添加:

安卓 {
...
    编译选项 {
        源兼容性 1.8
        目标兼容性 1.8
    }
...

或者

安卓 {
...
    编译选项 {
        sourceCompatibility JavaVersion.VERSION_1_8
        目标兼容性 JavaVersion.VERSION_1_8
    }
...

我发布这个答案并不是因为它优雅或特别有启发性,而仅仅是因为它是我所知道的在 Android 和桌面之间切换开发的最简单方法(它反向工作)。我从 IntelliJ 和 gradle 得到的错误远没有帮助,并且进行了大量的研究,这些研究在这里被提炼出来。

更新

我回到桌面时遇到了困难,并且得到了一个巨大的无法追踪的转储,我想将其包括在内以供将来参考:

java.lang.NullPointerException
        在 java.util.Objects.requireNonNull(Objects.java:203)
        在 com.android.build.gradle.BasePlugin.lambda$configureProject$1(BasePlugin.java:436)
...

这意味着我没有按照我混淆上述配置的说明进行操作。


推荐阅读