3

到目前为止,我一直在我的混合 Cordova Android 项目中使用 Java 8 功能 - 我有一个自定义插件,我在其中使用 Java 8 功能,例如try-with-resources. 为了做到这一点,除了确保安装了 JDK 8 之外,我需要做的就是创建一个platforms/android/build-extras.gradle包含以下内容的文件

defaultConfig
{
 jackOptions {enabled true}
}
compileOptions 
{
 sourceCompatibility JavaVersion.VERSION_1_8
 targetCompatibility JavaVersion.VERSION_1_8
}
allprojects
{
 compileOptions
 {
  sourceCompatibility = JavaVersion.VERSION_1_8
  targetCompatibility = JavaVersion.VERSION_1_8
 }
}

刚刚使用最新版本的 Android Studio 设置了一个新的更粗的 Ubuntu 机器 - 我使用 CLI,但发现使用 Android Studio 和 SDK Manager 是确保正确安装 Android 平台、工具等的最简单方法 - 我做了下列的

  • 编辑platforms/android/cordova/lib/builders/GradleBuilder.js所以它发出distributionURL为https\\://services.gradle.org/distributions/gradle-4.4-all.zip
  • 已编辑,因此它使用此处platforms/android/build.gradle指定的最新 Android Gradle 插件。

    dependencies { classpath 'com.android.tools.build:gradle:3.1.0' }

  • 按照这里的建议进行编辑platforms/android/build-extras.gradle,以阅读

    android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

在这一点上,我觉得我已经做了一切必要的事情来安抚 Cordova 和 Android,所以我继续发出一个cordova clean报告成功,然后cordova build android返回以下内容

Could not determine the dependencies of task ':compileDebugJavaWithJavac'. 
Could not resolve all task dependencies for configuration 
':debugCompileClasspath'.
Could not resolve project :CordovaLib.
Required by:
project :
> Project : declares a dependency from configuration 'debugCompile' to
configuration 'debug' which is not declared in the descriptor for project 
:CordovaLib.

堆栈跟踪仅包含此

ANDROID_HOME=/home/droidos/Android/Sdk
JAVA_HOME=/usr/lib/jvm/java-8-oracle
Subproject Path: CordovaLib  
The Task.leftShift(Closure) method has been deprecated... .
WARNING: Configuration 'compile' is obsolete...
WARNING: Configuration 'debugCompile' is obsolete...
WARNING: Configuration 'releaseCompile' is obsolete...
publishNonDefault is deprecated and has no effect anymore....

切换回旧样式build-extras.gradle文件也不再起作用,并返回类似I don't know Jack.

我一定在这里遗漏了一些东西。从 Cordova CLI 编译 Cordova Android 项目以使用 Java 8 的正确方法是什么?为了完整起见,我应该提到我正在使用 Node 8.9.2 和 Cordova 7.1.0。超出这一点的升级会导致我在插件中使用的Duktape Javascript脚本引擎出现问题。

4

0 回答 0