如何使用 Java 在 Android 和桌面 (IntelliJ 2018 CE /Gradle) 上使用 libGDX 进行开发 8
How to develop with libGDX on both Android and Desktop (IntelliJ 2018 CE /Gradle) with Java 8
慢慢学习gradle。 (对我而言)必须从命令行排除 IDE 错误和 运行 我的项目。这让我发现我的路径是指 JRE 而不是 JDK;我收到一条错误消息,指出 tools.jar 不在路径上,就是这样。
但是当我执行 gradlew desktop:debug
.
时,我仍然无法超过大约 80%
因此这个问题与我最近升级到2018版本的IntelliJ有关。 2017 版运行良好,有一个很大的免责声明,我不是,实际上当时使用 Java8 lambda。到了 2018 年,我觉得创建一个新的 libGDX(我知道针对多个平台的最佳方式)项目来将我的所有文件转储到其中而不是调试我得到的所有(通常无用的)堆栈跟踪。
开箱即用我对 gradle 进行了最少的进一步修改以使桌面版本正常工作。我真的不想重复这一点,因为我选择了一个新名称,这意味着需要进行大量编辑和修改。在 Android 上部署时,我卡住了。
Gradle 版本和 gradle 文件需要进行哪些修改才能使 Android 构建工作?对于奖励积分,为什么显然有 4 个不同版本的 gradle 涉及?
在我的最高级别 build.gradle,默认情况下我有
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
...
我不得不更改为
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
}
...
并扩展:
buildscript {
...
repositories {
...
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
接下来,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 添加:
android {
...
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
...
或
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
我发布这个答案并不是因为它很优雅或特别有启发性,而仅仅是因为它是我所知道的在 Android 和桌面之间切换我的开发的最简单方法(它反向工作)。我从 IntelliJ 和 gradle 那里得到的错误一点帮助都没有,并且进行了大量研究,并在此处提炼出来。
更新
我在返回桌面时卡住了,并且得到了一个无法追踪的大量转储,我想将其包含以供将来参考:
java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at com.android.build.gradle.BasePlugin.lambda$configureProject(BasePlugin.java:436)
...
这意味着我没有按照说明进行操作,我混淆了上述配置。
我花了很多时间在java8中编译libgdx。我做到了。对我和我的朋友有用。如果您想尝试它并且它立即失败,请给 Intellij 几次重启和缓存失效。可能需要从 %userdir% 中删除 .gradle(不一定),但最终它工作稳定。
这是我的配置:
Intellij IDEA 18+ 或 Android studio 3.0+
wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-bin.zip
项目 build.gradle:
repositories {
google() //add google repo
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' //higher versions were not compiling right
}
Andoird build.gradle:
android{
buildToolsVersion "27.0.3"
compileSdkVersion 27
defaultConfig {
minSdkVersion 16 //16 is good enough for 2018
targetSdkVersion 27
//Forget about Jack if you were using it.
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
eclipse {
jdt {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
对于桌面 build.gradle
sourceCompatibility = 1.8
慢慢学习gradle。 (对我而言)必须从命令行排除 IDE 错误和 运行 我的项目。这让我发现我的路径是指 JRE 而不是 JDK;我收到一条错误消息,指出 tools.jar 不在路径上,就是这样。
但是当我执行 gradlew desktop:debug
.
因此这个问题与我最近升级到2018版本的IntelliJ有关。 2017 版运行良好,有一个很大的免责声明,我不是,实际上当时使用 Java8 lambda。到了 2018 年,我觉得创建一个新的 libGDX(我知道针对多个平台的最佳方式)项目来将我的所有文件转储到其中而不是调试我得到的所有(通常无用的)堆栈跟踪。
开箱即用我对 gradle 进行了最少的进一步修改以使桌面版本正常工作。我真的不想重复这一点,因为我选择了一个新名称,这意味着需要进行大量编辑和修改。在 Android 上部署时,我卡住了。
Gradle 版本和 gradle 文件需要进行哪些修改才能使 Android 构建工作?对于奖励积分,为什么显然有 4 个不同版本的 gradle 涉及?
在我的最高级别 build.gradle,默认情况下我有
buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.2.0' } ...
我不得不更改为
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.1' } ...
并扩展:
buildscript { ... repositories { ... maven { url 'https://maven.google.com/' name 'Google' } }
接下来,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 添加:
android { ... compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } ...
或
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } ...
我发布这个答案并不是因为它很优雅或特别有启发性,而仅仅是因为它是我所知道的在 Android 和桌面之间切换我的开发的最简单方法(它反向工作)。我从 IntelliJ 和 gradle 那里得到的错误一点帮助都没有,并且进行了大量研究,并在此处提炼出来。
更新
我在返回桌面时卡住了,并且得到了一个无法追踪的大量转储,我想将其包含以供将来参考:
java.lang.NullPointerException at java.util.Objects.requireNonNull(Objects.java:203) at com.android.build.gradle.BasePlugin.lambda$configureProject(BasePlugin.java:436) ...
这意味着我没有按照说明进行操作,我混淆了上述配置。
我花了很多时间在java8中编译libgdx。我做到了。对我和我的朋友有用。如果您想尝试它并且它立即失败,请给 Intellij 几次重启和缓存失效。可能需要从 %userdir% 中删除 .gradle(不一定),但最终它工作稳定。
这是我的配置:
Intellij IDEA 18+ 或 Android studio 3.0+
wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-bin.zip
项目 build.gradle:
repositories {
google() //add google repo
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' //higher versions were not compiling right
}
Andoird build.gradle:
android{
buildToolsVersion "27.0.3"
compileSdkVersion 27
defaultConfig {
minSdkVersion 16 //16 is good enough for 2018
targetSdkVersion 27
//Forget about Jack if you were using it.
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
eclipse {
jdt {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
对于桌面 build.gradle
sourceCompatibility = 1.8