Android SDK 开发经验浅谈

2.1 核心原则

核心原则:一定要稳定,不能引起客户 App 的崩溃。

由于我们的 SDK 是服务于 2B 行业,所以会有很多 App 集成我们的 SDK,这就要求 SDK 的核心原则不能引起客户 App 的崩溃。一旦 SDK 的出现引起崩溃的 bug,这将对众多 App 造成灾难性的影响,如果出现这种情况,是非常致命的。所以对于 Android SDK 开发来说,要注意 try…catch 的使用、对象的检查等等。

2.2 SDK 设计原则

首先需要明确,一方面,SDK 的价值是给调用者带来价值。所以要努力降低用户的上手难度,易于理解。另一方面要时 SDK 代码易于维护。

1. 接口易用性

做 App 开发时,我也抱怨过XX 的 SDK 真难用。一个 SDK 好不好用,关键就看接口的设计是否简单易用,对于接入方来说他不会关注你的实现细节,能用一个 API 接口搞定的业务,坚决不用两个。注意控制接口的数量。

另一方面,注意接口的命名。一个好的 API 接口的命名能够让调用者见名思意,做到不需要借助帮助文档就能使用的程度就说明这个接口命名是成功的。比如对于 Android 中设置点击事件的接口 setOnClickListener。

2. 命名规范要统一

对于 SDK 开发来说,统一命名规范很重要,最好的状态是接入方看到接口命名就能知道是哪家厂商的 SDK。换句话说就是 SDK 的命名规范统一,形成自己公司的品牌效应。同时也方便接入方使用。

对于编码规范,网上都有各个大厂的规范模板,可以选择其中一个或自定义自己团队的规范,尽早统一代码风格。

3. 跨端接口尽量保持一致

对于同一套 SDK,尽量保持各端接口命名、实现逻辑要一致。在我们的开发过程中,也出现由于跨端之间的逻辑有差异导致客户在 Android 和 iOS 上体验不一致的问题,同时也会带来额外的支持工作。所以对于涉及到多个端的需求设计,一定要进行详细的沟通和确认,防止出现接口命名和实现不一致的情况。

4. 尽量不依赖第三方库

随着开源的普及,GitHub 上有很多经典的开源项目供开发者使用。对于 App 开发者,会经常使用到开源项目,比如网络请求 OkHttp、图片加载 Glide 等等。但是在 SDK 的开发中,一般的原则是尽量避免使用开源项目库。主要有以下几点原因:

  • 原因是为了避免与调用方由于使用相同的库引起的冲突,增加调用方集成的工作量,降低集成方的体验。

  • 开源库的不断更新,所以 SDK 需要及时保持更新,会增加额外的维护的工作量。

  • 由于引入开源库,出现问题排查困难。

5. SDK 包尽量小

SDK 包一定要小而精。

小是指包的体积要尽可能的小。 避免造成接入方的 App 增加很大,不然会引起接入方的不满,甚至下架。

精是指功能要专注。 比如我们的 SDK 是用于埋点的,那里面设计提供很多常见的工具类显然是不合适的。

6. 兼容性

兼容性是每个开发者都会遇到的问题。在 SDK 开发中更要保证新版本对于旧版本的兼容。常见的兼容性问题分为两类。

新老接口兼容

一般出现接口兼容性的问题主要是由于最初需求考虑不完善,导致后面进行方案优化时引起接口的变更,使之前的接口成为历史的老大难问题,最终造成删除难度大。

新功能兼容性

这里的兼容性问题分为两个方面:接入新功能的 App 和未接入新功能的 App。举个例子,当初我们 SDK 适配 OAID 的方案时,由于需要使用 MSA 提供的集成包才能获取,但是在 SDK 中一般是不轻易集成一个第三方的库,所以在设计这个方案时,就需要让接入方自己集成库,SDK 中提供获取的代码逻辑。最终在确定开发方案时,就需要考虑到一部分接入方使用了该功能,需要保证该功能正常读取。一部分接入方没有使用到该功能,要确保无异常出现。一般这种兼容性问题会决定开发方案的技术实现。

3. 集成与维护


3.1 SDK 集成

集成方式要多样同时灵活方便。比如对于 Android 来说,我们提供通过maven、gradle 依赖引入等方式,也是推荐的集成方式。但是对于一些接入方由于网络的限制,无法直接依赖 maven,这里就需要提供 aar 包或源码来集成。

3.2 集成指南

对于 SDK 的集成和使用,以及版本更新内容和 API 接口介绍,一定要准备比较完善的用户接入指南。比如我们的 SDK 接入指南分为:

  • 基本使用

  • 常见问题

  • 高级应用

  • 插件配置

  • ……

尽管根据经验来看,有些开发者没有看文档的习惯,但是一份完整的指导文档还是非常有必要,它可以节省很多集成的成本和时间。

同时文档要注意合理的规划设计,避免一份文档内容太多,造成阅读困难。对于使用性的部分,最好有示例代码进行展示。

3.3 完备的测试报告

在实际的接入过程中,有很多接入方需要提供相关的性能测试说明,这部分的内容需要及早准备。测试报告的工作可以研发和测试一起协助进行输出,最终方便后续的支持工作,降低维护成本。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
的资深开发者,这些资料都将为你打开新的学习之门**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值