制作SDK注意事项

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 制作SDK注意事项

开发SDK一般需要三个工程:

  1. 研发SDK工程;2.生成SDK工程;3.SDK使用demo工程
    SDK一般有两大优点:
    1.防止别人看到代码和实现;
  2. 组件化,提高代码复用率(SDK也算一个功能组件,和pod导入的工程一样)。

一般SDK只是实现部分特定功能。把整个app都做成sdk,那是设计的错误。首先完整app需要大量第三方库,这样也要把第三方库也转化包含到SDK中,使用SDK的app也需要大量第三方库,很难处理内外库的版本冲突问题。这样复杂的SDK,用户也很难使用。做SDK的人或许可以给予这个复杂SDK做出一个app,其它的人不懂内部实现,很难实现基于这个SDK开发出新的app。由于存在库版本冲突问题,所以建议SDK中尽量不用第三方库,SDK中可以有少量页面,实现特定高内聚功能为佳。如支付功能做成SDK最合适。

SDK使用demo工程可以提供给外部使用者或开发测试人员,没有保密要求。开发人员大都是在研发SDK工程开发,只是最后向外提供SDK使用demo工程时才使用生成SDK工程产生.framework或.a库,拷贝到SDK使用demo工程,并更新资源库。

研发工程主要是为了调试和打印日志,这样能大大提高开发和定位问题的效率。一般xcode定位问题通过:1.设断点调试;2.在工程中搜索页面上的文本内容(不是从后台获取的内容,如页面标题);3.打印从后台获取的数据(最好日志中有文件名,函数名,日志所在的行数);4.View UI Hierarchy(正常的页面都能看到图层和直接看到图层的类名,部分页面需要内存很大导致无法看到,也有少部分非标准页面无法看到图层的类名)。对外提供的头文件和使用的sdk的文件包含sdk内头文件一般采用绝对路径,研发工程是使用全局搜索路径。所以为了方便修改,需要提供sdk的日志开关宏(sdk内头文件定义)和头文件包含宏(对外开放的总头文件定义)。

研发SDK工程:
配置两个宏定义为1。

```c
#ifndef TEST_SDK
//生产环境为0,测试环境为1
#define TEST_SDK 1
#endif

配置为1可以打印日志

若SDK中打印的日志很少,可以用测试宏包含起来就可以了。若打印日志比较多建议使用宏定义重载打印日志函数,这样可以很方便的开关打印日志。

```c
#if TEST_SDK
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...)
#endif

由于研发工程对外头文件采用全局搜索的方式包含头文件,使用SDK的工程采用全路径包含头文件,这样尽量防止SDK内外冲突,所以要采用编译宏控制包含头文件的方式。

#ifndef DEV_SDK
//非研发SDK项目为0, 研发SDK项目为1
#define DEV_SDK 1
#endif



配置为1,解决研发工程头文件包含。

#if DEV_SDK
#import "FHFollowListUnitEntity.h"
#else
#import <TestSDK/FHFollowListUnitEntity.h>
#endif
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
54
分享
相关文章
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
2623 0
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
193 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
193 0
|
4月前
|
Android SDK
【10月更文挑战第21天】
165 1
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
107 7
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
294 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
716 4
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
247 2

热门文章

最新文章

  • 1
    揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
    39
  • 2
    大牛直播SDK在四足机器人和无人机巡检中的创新应用方案
    34
  • 3
    基于大牛直播SDK的无纸化同屏会议与智慧教室技术方案
    37
  • 4
    【Azure Service Bus】分享使用 Python Service Bus SDK 输出SDK内操作日志
    87
  • 5
    【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
    30
  • 6
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    145
  • 7
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    65
  • 8
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    37
  • 9
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    77
  • 10
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    190
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等