iOS SDK开发之 .a静态库
注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤。
环境:xcode 9.2
下面我们开始操作:
第一步:创建一个静态库工程
打开Xcode,选择新建一个项目,新建Cocoa Touch Static Library。名称看自己需求起名,我直接叫MYSDK。

创建完成后已经有两个文件MMYSDK.h和MYSDK.m,如果想要新实现方法封装成SDK可以直接在在MYSDK这个类里面实现,也可以删除这两个文件将自己已经实现功能的类添加到工程里面。(这里只是写生成.a静态库的步骤,所以直接在MYSDK类里面实现)

在类里面实现弹出一个UIAlertView。


第二步:生成.a静态库
静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)
2.1、生成模拟器使用静态库,随意选择一个模拟器,然后编译工程(快捷键command + B)。这时候已经生成只在模拟器能用的.a静态库libMYSDK.a。

2.2、同样的道理选择Generic iOS Device生成真机能用的.a静态库

右键libMYSDK,选择Show in Finder 在Products文件夹下有两个文件夹Debug-iphoneos和Debug-iphonesimulator,分别是真机和模拟器对应的静态库。

第三步:合成通用.a静态库
将真机和模拟器的.a静态库合并成一个通用的静态库,在终端完成。使用命令行:lipo -create 真机.a静态库路径 模拟器.a静态库路径 -output 合成静态库路径 (直接拖拽.a文件路径就可出现在终端)。

至此,最终的合成库已经生成在桌面,可以直接拿来用了。需要注意的是需要将真机或模拟器任意.a静态库文件夹下的include/MYSDK文件夹中的.h头文件一起加入应用工程。
第四步:.a静态库的使用
4.1、随意创建一个工程,将生成的.a静态库和头文件放到一个文件夹中添加到工程(这里只是说明静态库的使用,请忽略工程目录结构)。
特别说明:如果静态库封装多个类,将所有类的头文件集中添加到一个.h文件,这样在使用的时候只需导入这一个头文件就行。

4.2、在ViewController里面导入头文件并且调用分装的方法。

4.3、分别在模拟器和真机运行(iPhone X模拟器和iPhone 6S真机),运行结果如下。

至此,大功告成
iOS SDK开发之 .a静态库的更多相关文章
- iOS SDK开发之 .framework静态库
查看.a静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建一个静态库工程 ...
- iOS开发之*.a静态库注意事项
以*.a静态库的形式引入工程的(比如:libUploadLib.a),*.a里面的class有category形式实现时,除了在工程Target的 Build Phases里面的 Link Binar ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- iOS多线程开发之GCD(中篇)
前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...
- iOS多线程开发之NSOperation - 快上车,没时间解释了!
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS项目开发常用功能静态库
YHDeveloperTools iOS项目开发常用功能静态库 查看源码 功能方法: 1.字符检查 [NSString checkStringWithType:Email andTargetStrin ...
- iOS游戏开发之UIDynamic
iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...
- iOS多线程开发之NSOperation
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS多线程开发之GCD(死锁篇)
上篇和中篇讲解了什么是GCD,如何使用GCD,这篇文章将讲解使用GCD中将遇到的死锁问题.有兴趣的朋友可以回顾<iOS多线程开发之GCD(上篇)>和<iOS多线程开发之GCD(中篇) ...
随机推荐
- drf模块分析
drf请求模块.渲染模板.解析模块.响应模块.异常模块 请求模块 drf的请求模块 1.drf的request是在wsgi的request基础上再次封装 2.wsgi的request作为drf的req ...
- Flask开发系列之模板
Flask开发系列之模板 本文对<FlaskWeb开发:基于python的Web应用开发实战>模板一节做的总结. Jinja2模板引擎 模板 模板是一个包含响应文本的文件,其中包含用占位变 ...
- java.lang.ClassNotFoundException: org.apache.jsp.login_jsp
<span style="font-family: Simsun; background-color: rgb(255, 255, 255);">想必大家在用Eclip ...
- js 一些小技巧
Javascript 中的 绑定事件 on $(document).on("事件","元素","方法"): Js 定时方法 1.setTim ...
- 爬虫笔记八——Scrapy实战项目
(案例一)手机App抓包爬虫 1. items.py import scrapy class DouyuspiderItem(scrapy.Item): # 存储照片的名字 nickName = sc ...
- JS获取当前日期和时间的方法,并按照YYYY-MM-DD格式化
Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...
- Keras class_weight和sample_weight用法
搬运: https://stackoverflow.com/questions/57610804/when-is-the-timing-to-use-sample-weights-in-keras i ...
- 【leetcode】1224. Maximum Equal Frequency
题目如下: Given an array nums of positive integers, return the longest possible length of an array prefi ...
- Redis 历史版本下载URL
Redis 历史版本下载URL: http://download.redis.io/releases/ Redis和RedisClient 官网下载方式: https://blog.51cto.com ...
- 6.LINUX32位和64位系统的区别和选择