android - 如何使用 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?
解决方案
在我的顶级 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) ...
这意味着我没有按照我混淆上述配置的说明进行操作。
推荐阅读
- c++ - 将可变参数从一个函数传递给另一个?
- amazon-web-services - SQS Lambda 发布到同一堆栈中的同一 SQS
- here-api - 这里 Maps API (JS):GeoJSON 加载的多边形为属性字段返回空值
- common-lisp - 在 Common Lisp 中测试浮点错误不可知 =
- flutter - 如何裁剪小部件
- pdf - CUPS Zebra GC420t pdf 未正确贴在标签上
- mysql - 加载到 MySQL 将 String 变为 1
- c# - RestSharp 程序集绑定
- python - 仅在部署期间自定义模块导入错误
- excel - 精确匹配公式在 excel 中没有正确匹配,似乎选择了第一个匹配