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移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《2019-2021字节跳动Android面试历年真题解析》

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

873214)]

《2019-2021字节跳动Android面试历年真题解析》

[外链图片转存中…(img-NVnel7WS-1713723873215)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值