/best-practise-for-sdk-develop-on-android-source

Android 平台上SDK 开发经验总结以及最佳实践总结。

Primary LanguageC++

总结了Android平台上做好一个SDK的最佳实践,先上标题,计划之后按照标题补充细节,也请大家多补充意见。

##让SDK更有吸引力 讨好产品。

  • 功能
    1. 基础功能的完备性
    2. 创新功能(功能/UI)
    3. 有力的数据支撑(带来收益,用户量增长)
    4. 支持的广度(国际化,UNITY,Cocos2DX)
  • 性能
    1. 稳定性
    2. 处理速度,内存占用
    3. 安全性
  • Size(足够小)
    1. 自身Size
    2. 第三方库依赖
  • 易用
    1. 开发者注册
    2. 接入文档的简单性和完备性
    3. SDK及Demo的简单性和完备性

##让API更有吸引力 讨好研发。

  • 统一的风格
    1. API设计风格的统一性
    2. API命名风格的统一性
    3. Google/Facebook风格
  • 完备的API说明
    1. 功能说明
    2. 类型说明
    3. 多线程使用说明
    4. 回调线程说明
    5. 对象引用说明
    6. 错误处理
  • API的正交性
    1. 功能交集
    2. 误用概率

###让接入简单一点

  • 开发者注册
  • 开发者文档
    1. 文档描述的简要
    2. 文档描述的全面
    3. 文档的专业性
    4. 文档更新通知
    5. Demo实例的说明文档
    6. 文档的可维护性(markdown VS word)
  • SDK接入
    • 配置修改
      • AndroidManifest.xml配置
      • proguard配置
      • 用aar让一切变得简单
    • API使用
    • 让接入自动化
  • 应用程序上线
    1. 审核流程
    2. 审核时间
  • SDK升级
    • 主动更新
      1. 新功能
      2. 性能改进
      3. BUG修复
    • 被动更新(动态更新升级)
      1. 是否上架GP
      2. 安全性
      3. 动态加载体系的完备性
      4. 版本的维护和动态切换

##关注用户反馈

  • 持续改进 用户级别,类别(问题级别)

  • 问题排查

    • 反编译APK
      • 工具
        1. javap
        2. apktool
        3. d2j
        4. jd-gui
      • 反编译APK
        【流程图说明】
      • 修改APK
  • Q&A平台

  • 问题自动排查解决平台

##SDK设计与实现 SDK内部实现相关的最佳实践总结 ###领域建模与框架设计

  • 什么是领域模型
  • 为什么要基于领域建模
  • 如何进行领域建模
    • 成为领域专家 全面学习业务知识
    • 学习领域建模理论

###层次模块划分

  • Sdk应当如何划分层次
  • Sdk应当具备哪些模块

###最佳实践

  • 减小Size
  • 国际化
  • 数据加密
  • 单元测试
  • 提高性能
  • 不同ROM,不同Android SDK兼容
  • 插件化
    • 动态功能加载卸载
    • 动态升级
  • JNI
  • 日志与统计
  • 数据存储
  • 崩溃收集
  • 广度支撑
    • Cocos2dx SDK
    • Unity3d sdk
  • 多一种语言多一条路
  • 用专利武装自己