总结了Android平台上做好一个SDK的最佳实践,先上标题,计划之后按照标题补充细节,也请大家多补充意见。
##让SDK更有吸引力 讨好产品。
- 功能
- 基础功能的完备性
- 创新功能(功能/UI)
- 有力的数据支撑(带来收益,用户量增长)
- 支持的广度(国际化,UNITY,Cocos2DX)
- 性能
- 稳定性
- 处理速度,内存占用
- 安全性
- Size(足够小)
- 自身Size
- 第三方库依赖
- 易用
- 开发者注册
- 接入文档的简单性和完备性
- SDK及Demo的简单性和完备性
##让API更有吸引力 讨好研发。
- 统一的风格
- API设计风格的统一性
- API命名风格的统一性
- Google/Facebook风格
- 完备的API说明
- 功能说明
- 类型说明
- 多线程使用说明
- 回调线程说明
- 对象引用说明
- 错误处理
- API的正交性
- 功能交集
- 误用概率
###让接入简单一点
- 开发者注册
- 开发者文档
- 文档描述的简要
- 文档描述的全面
- 文档的专业性
- 文档更新通知
- Demo实例的说明文档
- 文档的可维护性(markdown VS word)
- SDK接入
- 配置修改
- AndroidManifest.xml配置
- proguard配置
- 用aar让一切变得简单
- API使用
- 让接入自动化
- 配置修改
- 应用程序上线
- 审核流程
- 审核时间
- SDK升级
- 主动更新
- 新功能
- 性能改进
- BUG修复
- 被动更新(动态更新升级)
- 是否上架GP
- 安全性
- 动态加载体系的完备性
- 版本的维护和动态切换
- 主动更新
##关注用户反馈
-
持续改进 用户级别,类别(问题级别)
-
问题排查
- 反编译APK
- 工具
- javap
- apktool
- d2j
- jd-gui
- 反编译APK
【流程图说明】 - 修改APK
- 工具
- 反编译APK
-
Q&A平台
-
问题自动排查解决平台
##SDK设计与实现 SDK内部实现相关的最佳实践总结 ###领域建模与框架设计
- 什么是领域模型
- 为什么要基于领域建模
- 如何进行领域建模
- 成为领域专家 全面学习业务知识
- 学习领域建模理论
###层次模块划分
- Sdk应当如何划分层次
- Sdk应当具备哪些模块
###最佳实践
- 减小Size
- 国际化
- 数据加密
- 单元测试
- 提高性能
- 不同ROM,不同Android SDK兼容
- 插件化
- 动态功能加载卸载
- 动态升级
- JNI
- 日志与统计
- 数据存储
- 崩溃收集
- 广度支撑
- Cocos2dx SDK
- Unity3d sdk
- 多一种语言多一条路
- 用专利武装自己