我们在 2018 年 9 月推出了 Java Unified SDK,该 SDK 可以在 Java、Android 和 LeanCloud 云引擎三种环境下运行,支持数据存储、LiveQuery、即时通讯、云函数、推送和混合推送等全部核心功能,并且开放所有源代码(代码见 这里
)。本周我们对 Java Unified SDK 进行了小版升级,当前最新版本为 5.0.13
,老版本 Android SDK 和云引擎 SDK 则将于 2019 年 9 月底完全停止维护。
由于不同平台的 SDK 版本众多,这里我们给大家梳理一下 Android/Java SDK 的版本分布以及将来的持续开发计划,帮助开发者快速升级或者选择到合适的 SDK 版本。
LeanCloud 服务上线之初,就推出了原生的 Android SDK,演变至今,因为功能的不同,老的 Android SDK 已经分为了多个 library:
各个 library 依赖关系如下:
cn.leancloud.android:avoscloud-feedback/avoscloud-search +- cn.leancloud.android:avoscloud-sdk cn.leancloud.android:avoscloud-fcm/avoscloud-mixpush +- cn.leancloud.android:avoscloud-push cn.leancloud.android:avoscloud-push +- org.java-websocket:Java-WebSocket:1.3.9 +- com.google.protobuf:protobuf-java:3.4.0 +- cn.leancloud.android:avoscloud-sdk +- com.squareup.okhttp3:okhttp:3.8.1 +- com.alibaba:fastjson:1.2.37
上面这些库都已经发布到了 Maven Central Repo,当前最新版本为 4.7.12,他们最终都会被新的 Java Unified SDK 所取代。
为了支持云引擎的功能,也因为 Android SDK 与 OS 绑定过于紧密,所以我们推出第一版云引擎 SDK 的时候,重新实现了 LeanCloud 核心 SDK 的功能,形成了云引擎运行环境使用的一套专用 SDK:leanengine-java-sdk( group: cn.leancloud, artifactId: leanengine
),最新版本为: 0.3.3
。leanengine-java-sdk 的主要依赖如下:
cn.leancloud:leanengine +- cn.leancloud:java-sdk (LeanCloud Java Runtime SDK) | +- cn.leancloud:fastjson-leancloud(*) | +- org.json:json | +- cn.leancloud:okhttp-leancloud(*) | | /- cn.leancloud:okio-leancloud(*) | +- cn.leancloud:leancloud-common (LeanCloud 底层核心 SDK) | +- cn.leancloud:android-stub (LeanCloud 模拟的 Android OS 接口层) | +- org.apache.httpcomponents:httpcore | /- org.apache.httpcomponents:httpclient +- javax.servlet:javax.servlet-api
基于 Java 运行时的云引擎项目,都需要依赖 leanengine-java-sdk(详见模版项目: java-war-getting-started )。
云引擎 SDK 是完全独立的 codebase,并且还依赖于几个 LeanCloud 自己 fork 的、版本较老且已不再维护的基础 library:
与 Android SDK 一样,云引擎 SDK 也会被新的 Java Unified SDK 所取代。
为了降低维护复杂度,统一 Android / Java SE 运行环境同样接口的行为,我们在 2018 年 9 月推出了 Java Unified SDK,希望用一套代码,来支持多个平台,降低内部维护难度的同时,也可以较好地保证不同平台上接口和功能的一致性。
新版 Unified SDK 发布之后,经过了多轮迭代,目前已经稳定并且被发布到了 Maven Central Repository 。
老版本 SDK 所有的网络请求都是通过 Callback 方式实现的,在实现多轮前后衔接的业务逻辑时会导致代码嵌套层级过多,影响阅读,同时在 Java 开发环境下这种异步的方式也不太友好。为此,Java Unified SDK 的存储接口完全基于 RxJava 来构建(同时也兼容老的 Callback 方式),通过函数式编程风格的改变,给业务开发带来更多便利。
Java Unified SDK 主要包含以下几个 library,其层次结构以及平台对应关系如下(完整列表见 这里 ):
获取 SDK 有多种方式,较为推荐的方式是通过包依赖管理工具下载最新版本。具体可参考文档: 获取 SDK
在公开的云引擎模版项目上,我们新建了一个分支,用来完成 Java Unified SDK 的集成,具体可以参考代码 java-war-getting-started(v5.x 分支) 。