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肯定不合格。