如何修改 Android 编译 Java 源文件的 JDK 版本 原生和 Cordova 为例

前提

如何修改 Android 编译 Java 源文件的 JDK 版本 原生和 Cordova 为例_第1张图片
Android 中控制 Java 编译有两个参数:
  • sourceCompatibility:编译 Java 源文件的 JDK 版本,默认当前环境变量对应版本
  • targetCompatibility:用于生成类的 Java 版本
两者关系:

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

两种配置方法

  • 导入 AS 图形化操作(以 1.8 为例)
如何修改 Android 编译 Java 源文件的 JDK 版本 原生和 Cordova 为例_第2张图片
  • app/build.gradle 中手动配置 (以 1.8 为例)
android {
   ···
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

注意

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

举例

遇到的问题

在 Cordova Android 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 groupApprovalEventHashMap 
  = new HashMap<>();

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

HashMap groupApprovalEventHashMap 
  = new HashMap();

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

问题解决

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


如何修改 Android 编译 Java 源文件的 JDK 版本 原生和 Cordova 为例_第3张图片

推荐阅读:
Android 检测权限的三种写法
如何在 Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
各大浏览器相继发布声明将停止支持 TLS 1.0 和 TLS 1.1 !

你可能感兴趣的:(如何修改 Android 编译 Java 源文件的 JDK 版本 原生和 Cordova 为例)