iOS 封装SDK

SDK设计与封装:从基础概念入门到架构设计落地笔记 SDK 全称 Software Development Kit,广义上的 SDK 是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合(在 iOS 项目中,SDK 也被称为库)。SDK 的全称是 Software Development Kit,翻译过来是软件开发工具包,这是一种被用来辅助开发某类软件而编写的特定软件包。 阅读详情


这篇教程的主要目的是解释怎么样在你的iOS工程中创建并使用一个SDK,俗称.a文件。所以,不像其他网站上的教程只说一点比较吊的东西(就是我们这些新手看不懂的东西,这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤。

环境:xcode 7.3(网上的demo大多数都是老版本的,发现很多东西跟现在的不一样)

下面我们开始操作:

创建一个静态库工程

打开Xcode,点击File\New\Project,选择iOS\Framework and Library\Cocoa Touch Static Library新建一个静态库工程.


将工程命名为GGTestSDK,然后将工程保存到一个空目录下。


一个静态库工程由头文件和实现文件组成,这些文件将被编译为库本身。

当创建静态库工程时,Xcode会自动添加GGTestSDK.h和GGTestSDK.m。你不需要实现文件,因此右键单击GGTestSDK.m选择delete,将它删除到废纸篓中。


创建一个AlertView控件

其实当前的工程就已经可以用了了,是时候为你的库添加一些功能了。由于本篇教程的关键在于教你怎么样创建一个GGTestSDK.a,而不是怎么样构建一个UI控件,这里你可以使用你自己封装好的控件。将你的控件从Finder中拖到Xcode下GGTestSDK目录下。


这里有一点要注意了,这里一定要勾选以下三个选项:


然后点击  Finish  进入工程:


对你的控件的头文件需要做的另一件事是将其添加到库的主头文件GGTestSDK.h中。在这个主头文件的帮助下,开发者使用你的库仅仅需要导入一个头文件,如下面的代码一样,而不是自己去选择自己需要的一块导入。


接下来就生成静态库

1、静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)。

首先,构建模拟器的静态库,如图



然后show in Finder



之后我拿到这个.a文件 还有和他相关的所有.h文件,存放在一个新的文件夹里(随便起名越吊越好。我的是:mySDK(我还不想辞职))如下



现在呢,你就可以拿着这个文件夹去挥霍了。将他拖到你要应用了工程中


你以为这样就完事了吗。哼哼,我就知道瞒不住你们,上面已经提到了,只能在模拟器上运行,如果我们链接手机:


我滴天,这都是什么鬼?可怕的报错信息又来了。其实没什么,对于这些报错信息,不要慌,他都是有关键点的,这个不多说了,有点跑题。上文说了这是由于我们生成.a文件的时候,是生成的模拟器版本的,想要在手机上用就要生成手机版本的,那么手机版本的怎生成呢?(我都不好意思说了)看图吧,别打我就行。


改成Device 构建构成(command + B)你就会发现 libGGTestSDK.a  变黑了。

重复之前的步骤  就可以在手机上运行了(但是,模拟器又不能用了。。。。)

接下来,我们就来生成一个双方都能用的libGGTestSDK.a

首先,打开终端,复制以下命令

lipo -create

/Users/ObjectPLA/Library/Developer/Xcode/DerivedData/GGTestSDK-gjmfufrwwxxwbpbigyezzbclphzv/Build/Products/Debug-iphoneos/libGGTestSDK.a 


/Users/ObjectPLA/Library/Developer/Xcode/DerivedData/GGTestSDK-gjmfufrwwxxwbpbigyezzbclphzv/Build/Products/Debug-iphonesimulator/libGGTestSDK.a

   -output /Users/ObjectPLA/Desktop/libGGTestSDK.a 

说明:

绿色:是你手机模式下可用的libGGTestSDK.a

红色:是你模拟器下可用的libGGTestSDK.a

蓝色:是最后生成双方都可用的libGGTestSDK.a  --并存在在桌面

最后拿到的 libGGTestSDK.a 就哪里都可以用了!有不对的地方还望各位多多指正,大家相互沟通交流。


iOS代码封装成.a文件(封装SDK) 在众多开源的大神的博客里经整理如下:(已测试ok) 一、描述一下 Build ActiveArchitecture Only设置成YES; Architectures按Xcode默认配置,arm64向前兼容; 制作.a静态库,需要要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以尽量做到最大的兼容性。 ValidArchitectures设置为:armv7|armv7s|arm6 阅读详情

相关推荐

iOS SDK封装及Bundle文件处理

在iOS应用程序开发中,封装软件开发工具包(Software Development Kit,简称SDK)是一种常见的做法,它可以帮助开发人员将特定功能、服务或库集成到自己的应用中。在"SDK.h"文件中,将SDK的头文件包含进来,并将需要对外公开的内容进行声明。只需将SDK的文件(包括头文件和资源文件)添加到应用程序项目中,并在需要使用SDK的地方导入"SDK.h"头文件。创建一个新的源代码文件,命名为"SDK.m",并在其中实现"SDK.h"中声明的函数、类和常量。创建SDK的公共接口。

YOLO_CODE的博客 442

十三、iOS SDK的开发与调试

一、创建一个workspace Xcode->File->New->Workspace 二、创建SDK 打开.xcworkspace文件,创建project,选择Cocoa Touch Framework,添加到workspace 三、创建Demo 打开.xcworkspace文件,创建project,选择Single View Application,添加到workspace ...

qq_16804091的专栏 646

手把手教你用DCT/DCG实现Multi-bit FF物理优化(含SPG流程避坑指南)

本文详细解析了Multi-bit FF(MBFF)在芯片物理实现中的优化方法,重点介绍了DCT/DCG与SPG流程的实战应用。通过物理感知综合、寄存器组识别和增量优化三阶段流程,实现PPA(Power-Performance-Area)的协同提升。文章还提供了Innovus与ICC工具的协同优化策略及典型问题排查指南,帮助工程师高效完成MBFF物理优化。

ik67890123的博客 242

SDK的封装

原因是缺少依赖,将bcprov-jdk15to18-1.68.jar这个包放在JDK的/jre/lib/ext这个目录下,这样放是可以解决的BC问题的,但是还有个问题需要解决,就是打包的路径需要改变(为了解决在引用SDK包时,避免和其他版本的bcprov-jdk15to18-1.68.jar这个包冲突),于是乎找到了解决jar包冲突的解决方案:https://blog.csdn.net/hff133133/article/details/126946153。实现对国密SDK的封装,遇到的一些问题。

weixin_38829962的博客 768

电子元器件基础:电阻、电容、电感的特性与应用解析

本文深入解析了电子元器件中电阻、电容和电感三大基础元件的核心特性、工作原理与选型应用。电阻作为电路中的‘交通警察’,控制电流与分配电压,其额定功率与精度是关键选型参数。文章结合实战经验,详细阐述了它们在电源滤波、信号处理及高频电路中的不同表现与避坑指南,是电子设计与维修的必备基础知识。

weixin_29213655的博客 377

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1139

封装自己的SDK

本文主要简单的示例如何创建自己的SDK依赖

weixin_55166254的博客 3657

拯救者R7000P(2021)装双系统Ubuntu20.04 解决联发科MT7921无线网卡在Ubuntu中不能联网

拯救者R7000P(2021)装双系统Ubuntu20.04/Ubuntu18.04 电脑配置:联想拯救者R7000P CPU:AMD R7-5800H GPU:RTX3060-6G 内存:16GB 固态:500G(原装)+500(加装) 1.做系统盘(本文以Ubuntu20.04为例) 1.下载Ubuntu20.04镜像 直接去Ubuntu官网或者一些国内的镜像去下载都可以,这里给出一个网址https://ubuntu.com/download/desktop,根据需要下载自己学要的Ubuntu版本,后缀

qq_41108639的博客 1万+

iOS 自己封装的SDK 打包与合并,新手教程!!!

前言 (1)这个时候就得说下静态库,动态库区别。 静态库:1.模块化,分工合作。2.避免少量改动经常导致大量的重复编译链接。3.也可以重用,注意不是共享使用。 动态库:1.使用动态库,可以将最终可执行文件体积缩小。2.使用动态库,多个应用程序共享内存中得同一份库文件,节省资源。3.使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更

LoveSnow0220的博客 1908

166、Sim2Real中的强化学习:域随机化与鲁棒策略

第二,训练时监控每个随机化维度对策略梯度的贡献,如果某个维度对loss的方差贡献极小,说明策略已经忽略它了,要么加大范围,要么删掉。第四,如果条件允许,用真实数据来校准随机化分布——采集真机上的传感器数据,拟合出参数分布,再把这个分布作为随机化的采样依据,这比拍脑袋定范围靠谱得多。动态随机化是很多人忽略的维度。域随机化的核心思想说白了就一句话:别去精确建模现实,而是把仿真环境本身变成一个随机分布的集合,让策略在“各种乱七八糟的物理参数”里都见过世面,这样到了真机上,不管现实落在哪个参数区间,策略都能兜住。

sundong_81的博客 27

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 369

swift 封装sdk_在Swift中为iOS构建SDK

swift 封装sdkRecently, I was working on a project that would entail clients configuring and integrating our service with their existing mobile applications. At first, I thought it would be a simple enou...

weixin_26638123的博客 1021

图数据库Neo4j面试内容整理-Neo4j的性能

在执行复杂关系查询时,Neo4j 通过图结构的高效存储和查询机制,能够比传统的关系型数据库提供更快的性能,尤其是在涉及深层关系的查询时。通过合理的配置、优化查询和使用合适的硬件,Neo4j 可以处理大规模的数据集和高并发的查询请求,满足企业级应用的需求。Neo4j 在处理图数据时,通过优化图的存储、查询和遍历等方面,提供了高效的性能,特别适合用于需要处理复杂关系和多层次连接的应用场景,如社交网络、推荐系统、知识图谱等。:Neo4j 会根据查询的结构和数据的分布自动选择最优的查询计划。

不务正业的猿 586

iOS项目功能模块封装SDK使用总结

一、功能模块SDK封装步骤: 1、创建IOS Framework工程 先我们需要创建一个iOS的CocoaTouch工程,点击Next,输入我们Framework的名字即可。下方我们暂且将该Framework的名字命名为“CreateLoginSDKFramework”。操作如下所示: Xcode ——》File\New\Project ——》iOS\Framework and ...

weixin_30216561的博客 566

Python经典编程习题100例:第25例:求各个阶乘的和

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 求1+2!+3!+…+20!的和。 解题思路: > 调用math模块中的factorial函数 代码: import math sum=0 for i in range(1,21): sum+=math.factorial(i) print(sum) ..

优快云 精品推荐 2735

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Unity封装Android & IOS SDK

在Unity与Android之间进行通信时,通常需要通过Android的Java代码与Unity的C#代码进行交互。以下是一个关于如何实现Unity与Android通信的概述,包括如何在Android Studio中封装生成AAR文件、如何使用C#编写DLL库来封装AAR的调用,以及如何在Unity中调用这个DLL库的接口和回调。Android端:使用Android Studio创建一个Android库(AAR),在其中实现需要与Unity交互的功能。C#端。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 912

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IOS 游戏渠道SDK 抽象工程封装

iOS 游戏渠道SDK 抽象工程封装(上) 一款手机游戏,要是想挣钱,接入渠道SDK是很重要滴。但是渠道SDK有那么多家,每一家的接口也不一样,那么是否需要每一家渠道SDK都来接入一次呢?游戏的研发同学,每次想到这边,都表示一个头,两个大。 那么为了给研发的同学减轻负担,让他们专心搞研发,给所有渠道SDK封装一个抽象工程,是很有必要的一件事情。这样,游戏接入一次抽象工程就OK了,到时候要接入渠...

书弋江山的博客 1933

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

iOS简单的SDK封装.a文件

https://www.jianshu.com/p/4e300dba4312

bowei1105的博客 426

iOS SDK 封装 flutter 插件(使用 pods 导入 SDK)

中配置需要依赖的第三方库,这里以微信 SDK 为例,配置。然后在 iOS - Classes 目录下的。中导包并初始化微信 SDK。然后在 iOS 目录下的。

m0_72382001的博客 276

iOS 使用静态库封装sdk

很多项目中都要开发iphone和ipad版本,并且很多时候,只不过UI交互布局不一样,数据层代码完全可以重用。本人,这次封装了数据层代码,做成静态文件,然后供iphone和ipad共同使用。 1. iOS静态库的制作参考http://www.cnblogs.com/beginor/archive/2012/04/20/2459244.html     在写代码过程中,本人,喜欢使用sq

万事皆有可能 9524

iOS中SDK的简单封装与使用

一、功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果。下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个App中都设置了Keychain Share。当App One通过我们的LoginSDK登录后,在启动App Two时,会去检索是否有账号以及在分享的Keychain中存储了,如果有的话,那么不会弹出

LDSleidisen的博客 5960

WebRTC SDK API封装(3)-Android/iOS平台

前面两篇已经讲了如何手动编译并封装WebRTC Native C/C++ API的方法及思路,本篇继续对封装的API进行进一步使用,将此功能使用在移动端进行演示,这种使用方式,更适合于即时通讯类产品应用. 打入补丁文件 由于 创建工程目录 以下命令 gn gen --args 修改编译文件 这里主要修改主目录src/BUILD.gn文件,此文件为编译整个WebRTC系统的入口文件,类似于M...

bingdele的专栏 1884

转载 -- iOS中SDK的简单封装与使用

一、功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果。下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个App中都设置了Keychain Share。当App One通过我们的LoginSDK登录后,在启动App Two时,会去检索是否有账号以及在分享的Keyc...

weixin_30260399的博客 164

iOS开发之App间账号共享与SDK封装

App间的数据共享可以使用KeyChian来实现。本篇博客就实战一下呢。开门见山,本篇博客会封装一个登录用的SDK, 该登录SDK中包括登录、注册、忘记密码等功能,当然该SDK中包括这些功能的UI、数据验证等业务逻辑、网络请求、数据存储等等。当然此处的登录SDK是一个简化版的,真正的登录SDK比这个考虑的东西要多的多,如果在加上多个App进行登录账号的共享的话,那么考虑的东西就更为复杂了。

zhaohongyan6的博客 638

封装了一套WeCenter的IOS SDK

度过了忙碌且迷茫的2015年,迎来了的郁闷且彷徨的2016年。 与哥们商量做些什么,谈不上创业也不是项目,只是想让2016年不必如2015年一样迷茫,也慰藉一下2016年的彷徨。 方向么,考察了几个行业,也做了些调研,总之都有挑战也都有机会。 大的方向还是以UGC为主以APP为主,所以想到了开源问答社区WeCenter(http://www.wecenter.com)。 于是,下载了WeC...

weixin_30652897的博客 107
上一篇: iOS开发之 动画CoreAnimation
下一篇: 字典转son
普通网友
博客等级 码龄11年 15粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值