开发可作为Android项目依赖的Java库,应选择哪个JDK版本?
兼容性说明与升级指引
你对Java与Android三类兼容性的理解完全准确,作为三方依赖库,核心保障API等级兼容性、字节码兼容性即可避免核心接入阻塞问题。
Java 8 升级方案
完全可以使用OpenJDK 8编译适配Android项目的Java库:
- 字节码兼容性:Android构建工具从AGP 3.0.0版本开始就原生支持Java 8字节码,就算接入方应用最低适配API 19也可正常使用,构建阶段会自动通过脱糖机制适配低版本系统。编译时指定参数
-source 8 -target 8,确保输出Java 8版本的字节码即可。 - API兼容性:你现有的
animal-sniffer-maven-plugin校验规则可完全保留,继续校验API level 19的限制即可。如果要使用Java 8新增的类库API,要么确认对应API属于Android API 19支持范围/属于脱糖机制支持的核心库范围,要么在接入文档中说明要求使用者开启核心库脱糖即可。
Java 11 升级方案
也可以使用OpenJDK 11编译,分两种场景处理:
- 若要最大化兼容所有Android项目,编译时添加参数
--release 8,指定输出Java 8版本的字节码,最终效果和OpenJDK 8编译完全一致,不会对接入方产生额外限制 - 若要使用Java 11字节码特性,编译指定
-target 11,则要求接入方的AGP版本至少为7.0.0,仅会对接入方的构建环境版本产生限制,对应用最低适配API等级无影响,依然可以支持到API 19 - API兼容性:和Java 8要求一致,保留现有API level 19校验规则即可,注意不要使用超出Android低版本API支持范围的JDK类库。
推荐选择
优先选择OpenJDK 8编译、输出Java 8字节码的方案,对接入方几乎没有额外限制,可覆盖市面上绝大多数活跃的Android项目。如果你的库需要使用Java 11的语法特性,再选择OpenJDK 11编译并指定输出Java 8字节码的方案即可。
内容的提问来源于stack exchange,提问作者sbernard
相关产品推荐
相关产品推荐

