Java 8 的 Phonegap CLI

Phonegap CLI with Java 8

直到最近,我一直在将 PhoneGap CLI 5.0 与 Node 4.1 和 Java 1.7 一起使用。为了构建 Android APK,我在 platforms/android 下创建了 build-extras.gradle 文件,内容为

ext.postBuildExtras = {
android {
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
allprojects {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }
}

}
}

这让我可以使用 Java 7 编译我的应用程序。大约一周前,我最初 运行 使用 Phonegap CLI 6.3.1 进入此应用程序,但现在已升级到 Phonegap CLI 6.3.3节点 4.5 和 Java 1.8。相同的 build-extras.gradle 文件仍然可以正常工作。但是,我想我会尝试 VERION_1_8 只是得到错误消息

Error: Error code 1 for command: /path/to/app/platforms/android/gradlew 
with args: cdvBuildDebug,-b, /path/to/app/platforms/android/build.gradle,
-Dorg.gradle.daemon=true,-Pandroid.useDeprecatedNdk=true

我最初切换到 Java 7,因为它允许我使用 try-with-resources。我敢说 Java 8 带来了一些其他的好东西——我怀疑在不使用 Joda-time 的情况下更好地处理时间等——这很可能使一个新的 t运行sition 变得有价值。但是,这个错误让我很困惑。我希望这里有人可以告诉我发生了什么事。


我应该提一下,我尝试使用新创建的 phonegap 项目 phonegap create newprj --template=hello-world

切换到版本 1_8

要在 Android 项目中启用 Java 8,您需要使用新的 Jack 编译器。这是对 build.gradle:

的相关更改
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

有关详细信息,请参阅 original guide by Google

此外,还要考虑到 Jack 编译器从 Build Tools 版本 21.1.1 开始可用。您需要至少将它们更新到此版本才能使用它们。参见 Experimental New Android Tool Chain - Jack and Jill