直到最近,我一直在使用带有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.