You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Library编译默认用JDK8,如何改回JDK6/7?

解决Android库升级后AAR编译版本强制为JDK8的问题

我维护Android库时也曾碰到过一模一样的情况——升级Gradle、SDK和Support Libraries后,不管怎么调整JDK版本设置,生成的AAR里的类始终是JDK8(主版本52)。下面是我排查和解决的几个核心方向,你可以逐个尝试:

1. 明确配置模块级编译选项,覆盖Gradle插件默认行为

新版Android Gradle插件(尤其是3.0+版本)会默认启用JDK8的部分特性,哪怕根项目设置了sourceCompatibility也可能被覆盖。一定要在你的库模块的build.gradle里显式配置Android专属的编译选项:

android {
    compileOptions {
        // 明确指定JDK7版本
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
        
        // 关键:如果启用了核心库脱糖(desugar),会强制依赖JDK8,需要关闭
        coreLibraryDesugaringEnabled false
    }
}

// 如果使用maven-publish插件,确保发布任务继承上述配置
publishing {
    publications {
        maven(MavenPublication) {
            from components.release
            pom.properties {
                property("java.version", "1.7")
            }
        }
    }
}

2. 排查依赖库的隐性JDK版本要求

新版Support Libraries(或AndroidX)的部分组件本身要求用JDK8编译,比如新版的appcompat、recyclerview等。你可以通过依赖树查看是否有传递依赖强制指定了JDK8:

./gradlew :your-library-module:dependencies

如果发现某个依赖库的compileOptions是JDK8,你有两个选择:

  • 降级该依赖到支持JDK7的旧版本
  • 如果必须使用新版本,可能需要接受JDK8编译(不过这和你的需求冲突,优先尝试降级)

3. 锁定Gradle使用的JDK环境

有时候Gradle会优先使用系统全局的JDK,忽略项目配置。你可以通过以下方式强制指定JDK7:

  • 在项目根目录的gradle.properties里添加:
    org.gradle.java.home=/path/to/your/jdk7
    
  • 检查系统环境变量GRADLE_JAVA_HOME或JAVA_HOME是否指向JDK7,避免Gradle自动拾取JDK8

4. 查看构建日志,定位编译任务的实际JDK版本

执行构建时添加--info参数,查看编译阶段实际使用的JDK版本:

./gradlew :your-library-module:assembleRelease --info | grep "Java version"

如果输出显示用的是JDK8,说明你的配置没有被编译任务正确读取,需要检查是否有其他第三方构建插件覆盖了编译选项。

5. 清理Gradle缓存,避免旧配置残留

Gradle的缓存经常会导致奇怪的问题,建议彻底清理后重新构建:

./gradlew clean
rm -rf ~/.gradle/caches
./gradlew build

之后再提取AAR文件,用javap -verbose YourClass.class | grep "major version"验证主版本号是否变为51(JDK7)。

6. 检查代码中是否无意中使用了JDK8特性

如果你的代码里用了Lambda表达式、默认方法、Stream API等JDK8专属特性,哪怕设置了source/target为7,编译也会强制使用JDK8。可以用Lint检查:

./gradlew :your-library-module:lint

查看是否有"NewApi"或"LambdaLast"之类的警告,定位到使用JDK8 API的代码并修改。


内容的提问来源于stack exchange,提问作者Mohammad Ersan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:05:07