JAVA面试题分享五百四十三:开发一款 SDK 需要注意哪些问题

目录

1、版本冲突

1.1、Java 版本问题

1.2、kotlin 版本问题

1.3、minSdkVersion 版本问题

1.4、题外话

2、依赖混淆

3、向下兼容

4、非空处理

5、清晰的注释

6、版本统一

7、DIP 依赖倒置原则

8、系统兼容判断

9、依赖冲突


1、版本冲突

1.1、Java 版本问题

当业务方的 Java 环境是 1.8 时,如果 SDK 是使用 Java 11 编译,则调用 SDK 相关代码的地方在编译时将会报错:

类文件具有错误的版本 55.0(jdk 11), 应为 52.0(jdk 8)

所以,SDK 在非必要情况下,Java 版本尽量兼容到最低,除非遇到特殊情况,例如 SDK 需要适配 Android 12,但 Deprecated 的 ElementType�.MODULE 标明需要 Java 9 才支持,SDK 被迫要升级 Java 版本,这种情况也能允许,但对外提供的接入文档最好明确标明最低的 Java 版本。

1.2、kotlin 版本问题

META-INF/xxxx_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.

上面这类错误相信遇到的应该不少,Java 有一套自己的 JDK 判断准则,Kotlin 也有,Kotlin metadata 的版本来自 KGP 版本,也即意味着,当你的 SDK 使用高版本的 KGP 编译时,业务方要么编译不过,要么被迫升级 KGP 版本,这会使业务方因为升级 Kotlin 而带来其他业务的不稳定性。所以,如果非必要的情况下,尽量保持低版本的 KGP 版本,与 Java 版本类似;或是,SDK 就不要使用 Kotlin 来开发,减少影响业务方的变量。

参考文档:

  • Kotlin 填坑记之 Compatibility[1]

1.3、minSdkVersion 版本问题

组件依赖的 AndroidManifest.xml 会保留  minSdkVersion 与 targetSdkVersion, 业务方在打包时,如果 SDK(23) 的 minSdkVersion 比业务方(21)高的话,打包将会报错:

Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 23 declared in library

如果业务方被迫升级 23 的话,将会导致业务项目机型覆盖面出现很大的问题,所以&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之乎者也·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值