您的当前位置:首页正文

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

来源:要发发知识网

前提

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结构,可能需要修改多处

举例

遇到的问题
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