美文网首页Android开发经验谈
Android如何修改编译java源文件的jdk版本 原生和Co

Android如何修改编译java源文件的jdk版本 原生和Co

作者: JoshLiPan | 来源:发表于2018-08-28 15:06 被阅读11次

前提

image.png
Android中控制java编译有两个参数:
  • sourceCompatibility:编译java源文件的jdk版本,默认当前环境变量对应版本
  • targetCompatibility:用于生成类的Java版本
两者关系:

targetCompatibility >= sourceCompatibility , 在Android中保持两者一致就行

两种配置方法

  • 导入AS图形化操作(以1.8为例)
image.png
  • app/build.gradle中手动配置 (以1.8为例)
android {
   ···
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

注意

Cordova,React-native等跨应用平台修改了Android结构,可能需要修改多处

举例

遇到的问题

在CordovaAndroid 6.3.0参照如何在Cordova Android 7.0.0 以下版本集成最新插件集成jmessage-phonegap-plugin最新版本时,出现编译错误:

BUILD FAILED

Total time: 1 mins 18.097 secs
(node:98864) UnhandledPromiseRejectionWarning: Error: /Users/josh/Desktop/ws/josh/cordova/jm/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
/Users/josh/Desktop/ws/josh/cordova/jm/platforms/android/src/cn/jiguang/cordova/im/JMessagePlugin.java:108: error: diamond operator is not supported in -source 1.6
        groupApprovalEventHashMap = new HashMap<>();
                                                ^
  (use -source 7 or higher to enable diamond operator)
1 error

FAILURE: Build failed with an exception.
问题分析
HashMap<String, GroupApprovalEvent> groupApprovalEventHashMap 
  = new HashMap<>();

这样的写法从jdk1.7以后才支持,在jdk1.6下需要写成

HashMap<String, GroupApprovalEvent> groupApprovalEventHashMap 
  = new HashMap<String, GroupApprovalEvent>();

而CordovaAndroid 6.3.0中默认配置了我项目的编译java源文件的jdk版本为1.6,所以导致编译失败

问题解决

导入AS同时将android和CordovaLib模块的编译版本设置为1.8,问题解决


image.png

相关文章

网友评论

  • 米娜与罗夏:HashMap<String, GroupApprovalEvent> groupApprovalEventHashMap
    = new HashMap<>();
    终于知道这个报错是为什么了:sweat:

本文标题:Android如何修改编译java源文件的jdk版本 原生和Co

本文链接:https://www.haomeiwen.com/subject/wjwfwftx.html