带Java 8的Phonegap CLI

直到最近,我一直在使用带有Node 4.1和
Java 1.7的PhoneGap CLI 5.0.为了构建
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遇到了这个问题,但现在已经使用Node 4.5和Java 1.8升级到Phonegap CLI 6.3.3.相同的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等,我怀疑 – 这可能会让一个新的转变变得有价值.但是,这个错误让我感到难过.我希望这里的某个人能够告诉我发生了什么.

我应该提一下,为了更好的衡量,我尝试使用新创建的phonegap项目切换到版本1_8,phonegap创建newprj –template = hello-world

最佳答案 要在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.

点赞