制作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日志并进行多维度分析。
目录
相关文章
|
7月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
安全 开发工具 Android开发
几个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
1981 0
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
97 0
|
24天前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
62 1
|
2月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
59 7
|
4月前
|
开发工具 Android开发
解决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
172 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
4月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
340 4
|
4月前
|
开发工具 Android开发
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
159 2
|
4月前
|
开发工具 Android开发
[Android Studio]please select android sdk
[Android Studio]please select android sdk
75 1

热门文章

最新文章