慢慢学习gradle。(对我来说)排除IDE错误并从命令行运行我的项目是必不可少的。这让我发现我的路径指的是JRE而不是JDK;我收到一条错误消息,指出tools. jar不在路径上,仅此而已。
然而,当我执行gradlew桌面:debug
时,我仍然无法超过大约80%。
因此,这个问题与我最近升级到2018年版本的IntelliJ有关。2017版运行良好,有一个很大的免责声明,我当时没有,事实上使用的是Java8 lambda。搬到2018年,我觉得创建一个新的libGDX(我知道的针对多个平台的最佳方式)项目更容易将我所有的文件转储到其中,而不是调试我得到的所有(通常无用的)堆栈跟踪。
开箱即用,我对gradle进行了最少的进一步修改,以使桌面版本正常工作。我真的不想重复这一点,因为我选择了一个新名称,这意味着大量的编辑和破坏。当谈到在Android系统上部署时,我被卡住了。
Gradle版本和gradle文件需要哪些修改才能使Android构建正常工作?为了加分,为什么显然涉及4个不同版本的gradle?
我花了很多时间让libgdx在java8中编译。我做到了。对我和我的朋友都有效。如果你想尝试一下,但它马上就失败了,给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
}
安多尔德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
在我的顶级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' } }
接下来,林特和其他来源让我改变一行gradle/包装/gradle-wrapper.properties从
分发Url=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
到
分发Url=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$1(BasePlugin.java:436) ...
这意味着我没有遵循我混淆了上述配置的说明。