做android SDK开发两年的之后的经验总结


SDK开发经验之谈:
一、SDK是什么?包含特定功能的软件开发工具包。
二、这个工具包应该具有什么样的特征?
1-简洁易用
  ①一个好的SDK,应该让使用者不用花太多时间去学习如何使用。接口尽量简单易懂,包括接口命名,形参命名,以及异常抛出,都要明确。最好每个API都有对应注释。方便进入源码查看。
  ②另外,一个SDK 包(比如android里面aar),它对外开放的最好只有一个类,由它作为整个SDK的入口。
  反正一句话,SDK要做成傻瓜式的。
2-安全
  ①SDK不应该入侵宿主代码,也就是说,SDK最主要的作用,应该是接收参数以及输出结果,不能将 调用API时传入的某些对象进行改造。(比如,传入了一个ArrayList,SDK内部对这个list进行了增删,这种类似的动作最好不要做);
  ②由于android 的apk,或者SDK 的aar包,都是可以被反编译的,虽然可以用混淆的方式来稍微抵抗一下反编译,但是还是有可能泄漏核心代码。对于这种情况,使用JNI调用核心代码的方式,将核心代码放在动态库文件so里面,是不错的解决办法。
  ③权限最小原则,本SDK内不需要用到的权限,就不要在注册文件里面写。
3-稳定
  ①SDK的迭代周期相对较长,也就意味着,一个版本的SDK可能会维持很长时间,这段时间之内,要保持接口始终可用。
  ②另外一点,如果遇到了SDK迭代,需要删除某些API,也不能立即删除,而是要先标记该方法过时,然后在下下次迭代时,予以@hide,或者直接删除。
  ③android版本很多,为了让SDK兼容更低的版本,有时候需要在一些方法的上头加上可调用的最低SDK版本号,或者在java代码中判定当前的SDK版本,然后根据不同版本走不同的程序分支。
4-高效
  ①如果程序运行过程中进入了SDK的某个接口,然而这个接口的执行效率相当低,拖慢了整个程序执行的效率。那么这种SDK是不合格的。
  ②编写SDK内部代码,应该注意尽量减少内存损耗,电量损耗,CPU占用等;当然,如果直接在SDK内部就造成了内存泄漏,那么这个SDK肯定不合格。

猜你喜欢

转载自www.cnblogs.com/hankzhouAndroid/p/8955886.html