Android开发经验谈

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

2018-08-28  本文已影响11人  JoshLiPan

前提

image.png
Android中控制java编译有两个参数:
两者关系:

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

两种配置方法

image.png
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
上一篇 下一篇

猜你喜欢

热点阅读