zoukankan      html  css  js  c++  java
  • 移动端 SDK 开发经验总结及梳理

    做Android开发很多年了,多次思考过App开发和SDK开发在架构方面及其他各个方面的异同,以及各自方向开发时需要注意的事项。

    下面是我个人对SDK开发的理解及相关经验分享。

    一、SDK 开发概念

    SDK即Software Development Kit,通常是为辅助开发某类软件,而编写的特定的软件包、框架集合。同App开发不同,一般我们开发的SDK为相对独立的业务、拥有特定功能的工具集合,使用SDK的一般为B端的用户,一般是集成SDK来实现相关功能的App端开发者,我们会以 代码 + Demo + 文档 的方式交付。

    二、SDK 开发建议

    1. 便于参考的Demo

    集成 Demo 通常是一个简单的 App,用来展示如何快速地接入 SDK。Demo 的源码需要保证方便使用者参考,其版本变更策略和 SDK 版本的变化保持一致。它的开发原则也要与 SDK 一致,确保高质量的交付。

    2. 方便查阅的文档

    接入文档用来告诉 SDK 使用者,如何使用 SDK、详细使用步骤和可能发生的问题。文档内容包括:更新记录、基本信息、API 说明、集成步骤、FAQ等。好文档的标准就是清晰明了,通俗易懂。一个完全不懂 SDK 的开发者看着文档就能对接,对于经常遇到的问题要逐条列出,专业名词要有对应的解释。

    3. 慎用黑科技

    开发SDK的人可以注意下以下几个点:

    • 能用系统的API解决的,就不要使用第三方,减少对其他库的依赖
    • 黑科技虽然好,但是能不用的就不要用
    • 多考虑第三方带来的影响
    • 依赖其他SDK的,尽量别打包在一起
    • 能不用单例的就尽量少的使用
    • 核心代码的安全性

    三、SDK 开发要领

    SDK是需要我们提供给其他开发者使用的,简洁和高效的对接是非常有必要的。如果对接一个SDK很繁琐,或者需要关心很多业务之外的问题,那么说明SDK的设计就是存在问题的。

    1. SDK 易用性

    SDK本身就是一些公用的代码或者业务的集合,内部做了很多工作,实现了很多细节。 对于开发者而言,一个好的SDK应该是简洁易用的,不应该花费太多时间去对接。通过阅读Demo的代码和文档,就能对接好,才是SDK易用性的体现。

    2. SDK 稳定性

    我们必须要保证设计的SDK是稳定的,所以在SDK的设计及实现阶段,最好做到以下几点:

    a). 尽量保证对外提供的API是稳定的,非特殊情况不要更改。

    b). 必须要保证有稳定的业务支撑API的使用。

    c). 尽可能屏蔽掉SDK的迭代过程,尽量让用户升级时只需要关注版本号即可,避免出现不必要的升级适配操作。

    3. SDK 高性能

    性能问题,无论是普通的SDK开发还是应用的开发,都需要考虑到。作为SDK的开发者,我们必须时刻注意到性能问题,否则会影响到接入SDK的App的整体性能。

    一般的最需要关注的就是内存及电量这块的使用情况。

    a). 优化SDK的内存占用。一般 SDK 和 App 运行在同一进程,此时 SDK 要管理好自己占用的内存,合理分配,注意释放,并避免出现内存抖动。

    b). 优化电量消耗。尽量避免在后台运行一些不必要的服务,并优化SDK使用时的CPU使用情况。

    四、SDK 设计规范

    API 设计在任何开发中都非常重要,许多时候软件的质量好坏体现在 API 的设计上。

    在普通的应用开发中,API 只会在开发人员间流通,不会暴露给非本应用开发的其他人员。但是 SDK 作为一种服务,需要向开发者暴露一部分 API,这样才能使用 SDK 的服务。

    1. SDK 结构清晰

    SDK提供给别人使用的时候,结构清晰非常重要,以下几个点,可以供大家参考:

    • 文件组织方式清晰明了:给别人的SDK,解压下来后第一眼就能够分辨出每个文件夹是什么作用。资源文件,文档,demo,库,应该很容易进行区分。
    • 类名前缀和包命名或者缩写要一致:一定要以正常思考方式进行命名或者缩写。建议以驼峰命名方式。
    • 代码风格一定要一致:不要让人感觉接入过一个SDK,感觉到每一行代码都是不同人操刀的。
    • 函数命名遵循共性,表明其用途:命名这个问题,每个人都有自己的一套,但自己。
    • 代码注释要规范和清楚:接入者不一定回去仔细看文档,所以接口里面的注释必须要认认真真写。
    • API的访问权限必须要控制:不应该出现一些不需要暴露出来的方法,必须控制好API的访问权限,避免出现因此导致的未知异常。

    2. SDK 方便调试

    SDK提供给别人使用的时候,方便调试是很重要的,能减少对接过程中的问题反馈,以下几点可以参考:

    • 可以对外提供当前SDK状态的一些属性:SDK应该提供一些方法和属性,让接入者知道SDK的当前状态,但是绝对不能让用户直接设置这些状态。
    • SDK功能正确:编译无警告和错误,支持最新的特性,这是用户自行调试解决问题的前提。
    • API调用简单:SDK好用不好用,看调用API就感受出来了。
    • 便于调试:打印出SDK debug日志,给出一些提示性的信息,方便排查问题。
    • API回调参数明确:SDK调用完,需要在合理的实际给用户结果,设计好这些也能便于用户调试。

    一般开发SDK是需要包含的辅助功能如下(这里指的是除去主业务功能之外的其他功能):

    • SDK使用日志系统,自由筛选不同日志。
    • Crash日志本地收集。
    • SDK版本控制系统,方便升级及排查问题。

    以上这些功能不仅可以方便开发和调试,也提高了测试同学的效率。

  • 相关阅读:
    Echarts之美国新冠疫情地图制作
    前端三件套--CSS(pink老师课程笔记)
    数据预处理与转存(Hive--Mysql)
    HDFS的命令行使用
    hdfs的写入过程和读取过程
    树(一)树的基本知识
    指针中容易混淆的概念
    顺序查找、单链表查找、折半查找
    JAVA之I/O流
    SpringBoot-自定义spring-boot-starter
  • 原文地址:https://www.cnblogs.com/renhui/p/15551124.html
Copyright © 2011-2022 走看看