ONE SDK的设计总体分为3层: 平台层-Platfrom layer,适配层-Porting layer,核心层-Common layer。
我们所使用的是 平台层-Platfrom layer。一般为了针对不同平台提供给开发者,和平台一致API规范,使各平台的开发者无难度的集成SDK,例如我们会提供Java给Android,Objective-C 给IOS和MAC, C++ 给Linux、 IOT平台
在OS X上,可能会创建一个动态连接(Dynamically Linked)的framework。通过动态连接,framework可以更新,不需要应用重新连接。在运行时,库中代码的一份拷贝被分享出来,整个工程都可以使用它,因此,这样减少了内存消耗,提高了系统的性能。
这是一个功能强大的特性。
iOS工程中的SDK,俗称.a文件。创建、使用一个SDK。
环境:Xcode Version 8.1 (8T61a) (网上的demo大多数都是老版本的)
-
1.创建一个静态库工程
打开Xcode,点击File\New\Project,选择iOS\Framework & Library\Cocoa Touch Static Library新建一个静态库工程.将工程命名为StaticFrameBlueTooth(自己需要蓝牙功能,起了个蓝牙名字。如果想高逼格:那就 (名字拼音)XXXBlueToothSDK😀😀),然后将工程保存到一个空目录下。
一个静态库工程由头文件和实现文件组成,这些文件将被编译为库本身。
当创建静态库工程时,Xcode会自动添加libStaticFrameBlueTooth.h和libStaticFrameBlueTooth.m。因为不需要实现文件,右键单击libStaticFrameBlueTooth.m选择delete,将它删除。
-
2.其实当前的工程已经可以使用了,但是你的库还是需要添加一些功能吧??? 创建一个StaticFrameBlueTooth.a,可以使用你自己封装好的控件。将你的控件从Finder中拖到Xcode下StaticFrameBlueTooth目录下。(objc文件夹也是拖进去的,不是创建工程的时候 配送的!!!!注意一下!!!!)
一定要注意,这里一定要勾选以下三个选项:
-
3.点击 Finish 进入工程里面:
Compile Source为编译期间使用,而Headers文件仅仅提供一个接口!
将你的控件的头文件 添加到 库的主头文件StaticFrameBlueTooth.h中。在主头文件的帮助下,开发者使用你的库仅仅需要导入一个头文件,如下面的代码一样,自己去选择自己需要的一块导入。 </br>
其实头文件 也可以 自己创建Headers栏,再在里面按自己需求添加Public(公用)、Private(私有)、Project(工程)各自所需的头文件。但是条例一点要清晰,架构性要明确!
4.接下来就生成静态库
-
- 4.1静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)。
首先,构建模拟器的静态库,如图:
构建工程(command + B), 你就会发现 libStaticFrameBlueTooth.a 变黑了。
- 4.1静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)。
-
4.2然后show in Finder
-
-
- 4.3之后我拿到这个.a文件 、StaticFrameBlueTooth.h文件 和 他相关的所有.h文件,存放在一个新的文件夹里(起名就随便啦!! )如下:
-
5.将他拖到你要应用的工程中,就可以去挥霍了。
如果已经知道、了解 了导入对应头文件,即可以使用里面的三方库或自己定制的控件了。就无需了解我的Demo示例了!可以直接跳过 “运行效果”图片 的介绍。直接看最后提到的真机、模拟器通用的SDK 静态库介绍!
最终运行效果:
放上美女,是为了美观一点!😀😀😀😀😀
别分心了!看segment!我讲解一下这个多段选择器!
控件是一个长度不固定,但至少是屏幕宽度(展示50个时间点:5的倍数)。传入时间数组,即可自动生成一个长度适应的 多段选择器。当然宽度超过屏幕宽度。就需要放在UIScrollView里面了!
因为设置了他的frame (20,200,105,30)。其宽度是不为显示的时间总长 (⭐️背景色⭐️即是最好的应证)。超过控件宽度的地方不能响应⭐️点击事件⭐️也是一个应证!!
通用静态库
上面已经提到了,模拟器调试得到的静态库只能在模拟器上运行,如果使用真机必须选择使用真机可调用的静态库文件(.a文件)。
接下来,我们就来生成一个双方都能用的libStaticFrameBlueTooth.a
首先,打开终端,复制以下命令
lipo-create
/Users/个人PC/Library/Developer/Xcode/DerivedData/StaticFrameBlueTooth-adahgwpnjulylkcjpaomvnxafgmq/Build/Products/Debug-iphoneos/libStaticFrameBlueTooth.a
/Users/个人PC/Library/Developer/Xcode/DerivedData/StaticFrameBlueTooth-adahgwpnjulylkcjpaomvnxafgmq/Build/Products/Debug-iphonesimulator/libStaticFrameBlueTooth.a
绿色:是你手机模式下可用的libStaticFrameBlueTooth.a
红色:是你模拟器下可用的libStaticFrameBlueTooth.a
蓝色:是最后生成双方都可用的libStaticFrameBlueTooth.a --并存在在桌面。最后拿
到的libStaticFrameBlueTooth.a 就哪里都可以用了!