目录
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 的话,将会导致业务项目机型覆盖面出现很大的问题,所以&#