| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> sdk开发经验总结 -> 正文阅读 |
|
[移动开发]sdk开发经验总结 |
文章目录博主之前做过一些 sdk 的开发,也对接过一些 sdk ,有一些 sdk 设计得非常优秀,也有非常糟糕的。 sdk 是给别人使用的,所以在开发 sdk 的过程当中,我们始终要提醒自己站在使用者的角度去考虑问题。 1. 降低接入成本1.1 接入简单Android 推荐使用 maven 仓库,通过 gradle 进行依赖。Ios 使用 pod 库。sdk 对外屏蔽内部的实现,只提供接口即可。 good case
bad case 1.2 文档和 demo文档和笔记最重要的区别就是,文档是给别人看的,而笔记是给自己看的。 good case bad case 1.3 api接口设计api 接口设计应当注意以下几点: 1. 接口保持精简,不要提供过多的接口2. 每个接口均应当提供详细的接口说明包括参数和返回值,以及接口的使用示例,
3. 接口参数不应过多个人觉得当参数超过5个时,就应当要考虑将参数封装成一个数据类
bad case
4. 接口方法过多,应当提供默认实现以下是一个生命周期的接口:
如果我们不做处理,那么用户在使用的时候就会变成下面这样,可能用户只关心 onError 和 onDownloadResult 两个方法,但是却需要复写所有的方法。
针对这种情况,我们应当提供一个默认的实现,这样使用者只需复写他关心的方法即可。
5. 接口尽可能和系统或者业内标准保持一致例如,以下是博主之前日志组件的一个接口
Android 系统的日志接口
可以看到,日志组件的接口在原有系统接口上做到兼容和增强, 1.4 向后兼容新版本应当做到和旧版本兼容,这样用户在进行升级的时候,只需要修改 gradle 文件里面的版本号即可。 2.稳定性稳定性是 sdk 的基础,没人愿意使用不稳定的产品。 2.1 plan B在 sdk 设计方案和接入的场景,我们可以考虑一下 plan B。
2.2 监控这里同样可以将监控区分为业务层和 sdk 内部,业务层的监控包括 crash 率监控,性能监控,这种我们可以接入一些专业的监控 sdk 来实现,
2.3 错误指引sdk 的 onError 接口应当返回明确的错误码和错误信息,并且在文档当中每种错误信息均需要给出对应的说明。 1xx:后台相关的错误码 每一个类别下面有详细的错误类别,比如201:文件下载失败,202:文件MD5校验失败,203:文件解压失败。 3.其他3.1 易扩展一个好的sdk应当具有良好的扩展性,以日志组件为例,
使用者可以实现这个接口,然后可以很方便的将日志输出任何地方,比如输出到网络,输出到其他进程。 3.2 关注性能如果sdk涉及到性能,那么在 sdk 正式发布时,需要先进行一下性能测试,主要包括 cpu 峰值,内存占用率,以及和具体业务相关的维度。
3.3 鉴权鉴权并不是每个 sdk 都会遇到的问题,主要涉及到和后台交互较多,并且有安全方面考量的场景就需要考虑到鉴权。 3.4 合规合规是一个非常重要的问题,在之前的项目组,隐私合规问题也是由我来跟进,作为业务方,最麻烦的就是 sdk 出现隐私合规问题,这样就需要推动 sdk 方去更改,解决问题的链路就会被拉长, 其实做到合规也不难,主要是对于一些隐私字段的获取,比如 AndroidId ,IMEI ,手机型号等。上报是隐私合规的重灾区,后台为了确定唯一性或者用户画像,通常需要 sdk 提供一些涉及隐私的字段。 如果实在需要这些字段,sdk 可以提供获取隐私字段的接口,让业务方去实现这些接口,以此来避免 sdk 的隐私合规问题以及获取隐私字段的频率问题。 good case
bad case
3.5 sdk接入标准化作为业务方,曾经接入过非常糟糕的sdk,体验非常差,至今回想起来都会觉得恶心,所以当时就一直想要尝试建立sdk接入的标准化,只有达到我们标准的sdk才能够接入,具体包括以下几个维度:
4. 总结作为业务方,我对接过非常优秀的 sdk 也对接过非常糟糕的 sdk,遇到糟糕的 sdk,内心一万匹草泥马呼啸而过。所以当自己作为 sdk 的开发者时,应当换位思考一下,如果我要接入这个 sdk,我希望这个 sdk 是什么样的,其实无非就是要有详细的说明文档,简单的接入方式,清晰的 API 接口以及一个简单的 demo,要求其实并不高。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 23:26:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |