0. 引言:
SDK是对很多非科班出身的产品经理而言是陌生的,但对于ToB产品领域,许许多多的ToB产品都需要面向公司级开发者提供自己的SDK产品。(当然,SDK首先是面向开发者的,所以称之为ToD产品更精确,但是从ToB产品的大范畴来说,SDK是ToB大产品范畴的一部分,所以在此划入大ToB产品的类别)
那么SDK是什么?SDK有什么设计套路吗?让我们一一来拆解。
1. SDK是什么?
维基百科对SDK的定义:
SDK:软件开发工具包(Software Development Kit, SDK)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。
SDK的定义比较拗口,我们简化一下就是:“SDK是程序员创建软件的开发工具的集合”。
这样就清晰了,我们再明确几个重点:
(1)程序员:
SDK是程序员开发出来的,也是要提供给程序员使用的。可谓:从开发者来,到开发者去。
(2)创建软件:
SDK是用来帮助程序员创建软件的,用来帮助程序员编程的。
(3)集合:
SDK是一个开发工具的集合,这里要强调它是一个集合,它不止包含单纯的功能模块文件,它还包含这些库文件的使用接口、说明文档、使用Demo等内容。
总之,SDK是这么一种存在:
假如你是ToB公司的产品策划同学,你们公司为客户公司的开发者提供一些功能,这些功能可能是QQ登录组件、支付宝支付组件、通信通道组件···等各类模块,你公司提供的这些功能模块就以SDK的形式存在,提供给客户公司的程序员。客户公司的程序员拿到你们公司的这套SDK后,你就可以根据里面的说明文档,调用提供的接口,使用SDK中的库文件(lib格式、dll格式、so格式等)进行编程,把你们提供的功能集成到自己的软件中,使他们的软件具备了SDK提供的功能。
2. 常见的SDK有哪些?
(1)在Windows 系统下:
有许多的SDK供开发者使用,在Windows 系统开发出各种个样的产品;
(2)在Android系统下:
有官方不断推出的Android SDK,供Android开发者在Android系统上开发出各种个样的产品。
(3)第三方公司提供的SDK:
例如:在2010年腾讯提供开放战略要将腾讯的社交能力开放给行业,就是我们常见的QQ分享、微信好友分享、朋友圈分享等功能,这些功能在Android系统上就可以通过SDK的形式提供给开发者。
在这里,我们要重点分享的,也是ToB产品经理需要策划的,就是第三类。
3. SDK存在的意义是什么?
答案是:效率。
SDK将常用的功能封装后,以组件的形式存在,让其他项目开发者,只需要简单集成SDK,调用几个接口,就可以使用SDK中已封装的功能。不再需要重复造轮子,可以大大提高开发效率。
尤其在移动游戏领域:
许多游戏产品能够在几个月内完成开发,一个重要原因就是能够直接调用 支付组件、语音组件、安全组件、数据通信组件等SDK,开发者只需要将核心精力放在游戏玩法的开发商。大大缩短游戏研发周期。
4. 企业用户对SDK产品的诉求是怎样的?
他们希望:
能够以最短的时间完成接入,能够以最简单的方法完成SDK验证,使用SDK提供的功能。与此同时,在SDK运行过程中,还要有足够高的稳定性、兼容性,对APP的性能影响要足够小。
5. SDK产品的存在形式
目前的ToB产品大部分都在为移动产品尤其Android产品提供产品功能,所以我们这里以Android产品为例进行说明。
一款SDK产品大概包含以下内容:
(1)SDK功能模块
在移动开发领域,可以大概了解以下概念,对于以C/C++语言为核心的native层开发,我们一般会提供.so格式的动态链接库文件;对于以java语言为核心的jave层开发,我们一般会提供.jar类型的库文件;对于以C#语言为核心的Unity等游戏开发,我们一般会提供.cs格式的功能模块。
SDK功能模块包含了核心的功能实现。
(2)API接口
有了SDK模块,程序员需要调用这些SDK模块以使用其中的功能。那怎么调用呢?就需要用到我们提供的API接口。API接口是一些函数,开发者将你提供的SDK加载到自己的工程中,通过对这些接口进行调用,就可以使用SDK中的功能了。
(3)文档
SDK模块怎么加载?API接口怎么调用?这其中需要注意什么?这些都需要通过文档的形式向开发者阐明。
(4)Demo
即使有了上面的功能模块、API接口和文档,开发者使用你的SDK产品依然是很抽象的,所以最好能给一个工程Demo,这个Demo中有详细的示例代码来说明怎么在工程中使用SDK,让开发者能够一目了然,快速编码。
6. SDK产品设计的 8 大技巧
SDK的开发工作是由技术同学完成,但他们更关注的是功能的实现。产品经理负责最终将SDK这个产品形态,进行产品化包装,然后作为产品提供给外部企业使用。
所以产品经理应该对外部厂商对SDK产品的使用场景有最敏感的把握,然后把这些关注点转化为产品上的需求,将这些用户体验层面的要求融入到技术同学的SDK开发过程中。
那么,对于企业用户的开发者,他们在使用SDK产品时有哪些关注点?
ToB产品经理在策划SDK产品时有哪些窍门?我们来总结SDK产品设计的8大技巧:
(1)技巧1: 接口越少越好
在客户的产品研发过程中,SDK的调用只是其中的一个小环节,他们的开发者对SDK产品的诉求是,用最短的时间完成接入,能够稳定的使用SDK提供的功能。所以,怎样保证SDK调用简单。方法是,接口越少越好。最好只需调用1-2个简单接口就可以完成接入。SDK接入的耗时最好不超过半天。
(2)技巧2: 要有简单的Demo
为SDK提供一份简单的Demo,可以说已成为SDK产品的必需品。对于客户开发者,在调用SDK时,参照提供的可运行的Demo工程接入SDK,会事半功倍,接入成功率大大提高。
(3)技巧3: 要有清晰的文档
一份好的SDK产品,其简明的接入文档是必不可少的。文档的描述需要清晰条理,描述清楚开发者在接入SDK过程中可能遇到的问题。格式方面,最好使用markdown格式,这种结构化的文档形式,在移植到官网平台上展现时,可以采用更标准的统一格式,也可以采用结构化的展现形式。
(4)技巧4: 体积越小越好
开发者许多时候会集成5个甚至10个以上的SDK,所以如果每个SDK的体积都比较大,最终会对自己的项目体积或者APP包的体积影响过大。因此,这就要求在开发SDK的时候一定关注体积大小,精简代码与功能,以最精简的形态提供最核心的功能。
(5)技巧5: 全面适配各种场景
SDK作为工程项目的组件,就需要适配各种各样的工程项目场景。以移动开发项目为例,就至少需要提供Android、iOS两种类型的SDK版本。再以移动游戏开发为例,需要适配各种各样的引擎语言,比如SDK需要支持Cocos引擎、Unity引擎、虚幻引擎等。
(6)技巧6: 足够的稳定性和兼容性
SDK作为第三方组件,对于客户来说是不太可控的。他们不清楚SDK内部的逻辑,也不可更改SDK的逻辑。一旦接入到自己的APP项目中,这就相当于一个黑盒的存在。一旦这个SDK出现crash情况,将会危及自己的APP的运行。所以他们对于SDK的稳定性和兼容性是非常在意的。
要想保证SDK的稳定性和兼容性,需要做到两点:
第一,在研发SDK时,从原理上多下功夫,在基础机制上保证SDK是能够适配各种机型、能够适配各种场景的。
第二,在对外推出之前,还需要进行全面的测试,在各种机型上,在各种场景下,对SDK进行全面的测试。
这里还有一个小Tips,在客户使用SDK前,可以提醒开发者自己可控SDK是否运行。方便如果出现问题,也可以及时通过后台开关关闭SDK的调用。
(7)技巧7: 接入自测要简单
SDK的接入完成后,开发者需要验证SDK接入是否成功。最基础的方法是,提供给开发者一个教程,开发者自己查看日志等方法,观察是否接入成功。
还有两个产品化成都更高的方法:
第一,本地接入,Web实时数据验证。在后台根据SDK接入后的数据上报情况,在Web端实时将接入检测结果呈现给开发者。开发者只需要在本地简单运行接入了SDK的项目工程就OK。简单方便,受欢迎。
案例:tdw.qq.com
第二,Web一体化安装SDK。有些SDK产品不再让开发者进行复杂的接入,直接要求开发者将APP上传,然后统一将SDK打入到APP里面,通过机器化的SDK打入方式,免去了人为接入可能存在的误操作等情况,将SDK的接入过程也免除了,这种方法只要最终提示打入成功,就代表接入SDK成功,更简单稳定。
案例:gameguard.nprotect.com
(8)技巧8: 保障数据安全
SDK接入后,在客户的工程中作为一个第三方黑盒的存在。所有公司都会很担心SDK是否有后门,是否会获取各种敏感数据上报。另外,尤其对于运行在海外的项目,欧盟出台了GDPR政策后,对数据的采集权、对用户的隐私权,都有更严格的要求,所以务必引起重视。
针对SDK数据安全问题,SDK产品设计过程中,需要做到3点:
第一,严格管理数据采集。SDK在开发过程中,需要做到:不需要的数据坚决不采集,因业务需要采集到的数据务必进行严格加密处理,谨防数据泄漏。
第二,在产品宣传过程中打消客户顾虑。在宣传时,重点呈现SDK数据权限问题,向客户承诺数据采集的严谨性和数据存储的保密性。打消客户的顾虑。
第三,在客户使用SDK时提醒客户注意数据隐私问题。你的客户需要提醒自己的用户会采集哪些数据,并需要经过用户同意之后,才能使用SDK产品。
----
以上即是SDK产品设计的 8大技巧,客户最关注,产品设计也最亟需解决。
7. 一些ToB类的SDK产品案例:
下面列举一下SDK产品案例,可以用来对比学习:
(1)友盟:https://www.umeng.com/
(2)Gvoice:https://gcloud.qq.com/product/6
(3)游密:https://www.youme.im/
(4)百度云SDK:https://cloud.baidu.com/
(5)腾讯YSDK:https://open.tencent.com/
8. 总结一句话
SDK产品形态是ToB产品化的重要组成部分,产品经理可以在SDK产品设计的过程中使用上述的8大技巧,与公司一起推出高度产品化的SDK产品。
------
附其他关于To B产品的总结文章:
《PM读书 | 《用户体验要素》:一张图读懂用户体验五要素》
END
Xander/2018/12/23 图片from Pixel,遵循CC0协议
(最后打个广告,笔者鹅厂产品经理一枚。如果想了解更多产品经理知识,请关注笔者的公众号:xander_talk,或者添加笔者微信号xanderfriend,欢迎交流。)