261 字
1 分钟
SDK 该长什么样:SuperSMS 的模块架构与双接入

双模块:app 是 demo,SuperSDK 是本体#

SuperSMS/
app/ # 宿主 Demo:登录框、消息列表、联调入口
SuperSDK/ # SDK 本体:网络、定位、发送、缓存

app 只依赖 project(":SuperSDK"),自己几乎没业务——Demo 越薄,越证明 SDK 自给自足consumer-rules.pro 跟着 AAR 走,宿主引入自动合并混淆规则,不用抄文档配 ProGuard。

双接入:Module 与 AAR#

// 方式一:本地 Module(联调期)
include(":SuperSDK")
implementation(project(":SuperSDK"))
// 方式二:AAR(交付期)
// ./gradlew :SuperSDK:assembleRelease
// 产物:SuperSDK/build/outputs/aar/SuperSDK-release.aar

AAR 方式要手动补传递依赖,README 里列得清清楚楚。交付物 + 依赖清单一次给全,对接方不踩坑。

网络层三件套#

network/ 下三个类分工明确:SuperSmsRetrofitClient 管 Retrofit 实例与超时重试,SuperSmsApiService 声明接口,SuperSmsApiHelper 做业务封装(登录拿 userId/smsToken、查短信带经纬度)。SuperSmsApiHelperTest 把登录与查询逻辑先测了——SDK 的网络层必须有单测,因为宿主出问题时第一句话就是“是不是 SDK 的 bug”。

SDK 设计三原则:Demo 要薄、接入要双轨、甩锅要有测试。