IOS真机和模拟器Framework、打包Framework(一
由于之前的打包不成功,后来就想进一步弄下framework所对应的环境
看了下Android也是一样的,初步先这样,以后慢慢深究
debug
app-arm64-v8a-debug.apk
app-armeabi-v7a-debug.apk
app-x86_64-debug.apk
app-x86-debug.apk
release
app-arm64-v8a-release.apk
app-armeabi-v7a-release.apk
app-x86_64-release.apk
app-x86-release.apk
分别对应为
arm64-v8a: 第8代、64位ARM处理器
armeabiv-v7a: 第7代及以上的 ARM 处理器
x86_64: 64位的平板
x86: 平板、模拟器用得比较多
前言
如果想将自己开发的控件、代码与别人分享,首先我们可以直接提供源代码文件。但是,有时候我们并不想别人看到我们代码的实现,而这些实现我们可能并不想开源出来。别人也不想将我们写的代码都拖到项目中,他们只是需要一种简单的方法来编译你的代码,使得你的代码易使用,并且在多个工程中易复用。所以我们需要的是一种方法来打包你的静态库,将所有的头文件放到一个单元中,这样你就可以立刻将其加入到你的项目中并使用。
OS X完美地支持这一点,因为Xcode就提供了一个项目模板,包含着默认构建目标(target)和可以容纳类似于图片、声音、字体等资源的文件。你可以为iOS创建Framework,不过这是一个比较复杂的手工活,如果你跟着教程走,你将学到怎么样跨过路障,顺利地完成Framework的创建。
下面我们就来进行打包Framework
一 目标
本文将基于Xcode9创建一个简单的工程,来教大家如何制作一个自己的framework,目的就是简单易学的制作framework。这种方法可以使得你的代码易分享,在多个工程中复用,并且可以隐藏实现细节,控制公开的头文件。
二 步骤
1、打开Xcode,新建工程。
不要选择“Application”,选择“Framework & Library”。选择第一个,然后Next。
![](https://img.haomeiwen.com/i3405147/d8073f910d5589b5.png)
![](https://img.haomeiwen.com/i3405147/842b6605827d2e11.png)
2、创建功能类。
首先创建一个继承自NSObject的HelloWorld类
![](https://img.haomeiwen.com/i3405147/9899aa85e60f32a3.png)
3、实现功能。
在新创建的类里面声明方法并实现。这里我写一个helloWorld的方法
HelloWorld.h
#import <Foundation/Foundation.h>
@interface HelloWorld : NSObject
(void)helloWorld;
@end
HelloWorld.m
#import “HelloWorld.h”
@implementation HelloWorld
-(void)helloWorld {
NSLog(@“helloWorld”);
}
@end
4、更改参数
在TARGETS下选中工程,在Build Settings下更改几个参数。
![](https://img.haomeiwen.com/i3405147/dea84c9a9b9c3a6a.png)
因为如果集成的项目支持 bitCode 就设置成yes 不支持就设置成NO
![](https://img.haomeiwen.com/i3405147/c420bac56bd7d71e.png)
5、设置Headers
将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
![](https://img.haomeiwen.com/i3405147/b5f59d907ef62cd9.png)
三 打包Framework
方法有很多 我们这里只说一种
--------真机打包
1.选中Generic iOS Device,编译程序 (只支持手机格式)
![](https://img.haomeiwen.com/i3405147/c1d49f201295b5ec.png)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
![](https://img.haomeiwen.com/i3405147/e7613c68ec7d8750.png)
![](https://img.haomeiwen.com/i3405147/6ca07abaee140390.png)
3.将framework拷贝出来保存,这就是我们最终制作的framework。
------------模拟器打包
1.选中模拟器,编译程序 (只支持模拟器格式)
![](https://img.haomeiwen.com/i3405147/cb0381f46931d531.png)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
![](https://img.haomeiwen.com/i3405147/9d80422e1f582c3c.png)
![](https://img.haomeiwen.com/i3405147/95df053fb4d7eb31.png)
四 合并framework
为了framework 支持真机 也支持模拟器 将两个framework 合并
我们通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
1 输入 lipo -info加真机上的这个文件路径 如图
![](https://img.haomeiwen.com/i3405147/4d8ea12aabe0a2ff.png)
然后回车
![](https://img.haomeiwen.com/i3405147/458feabf973a1472.png)
需要将真机和模拟器framework包中这个文件合并
lipo -create {文件2路径} -output ${生成的文件路径}
可以直接将最终生成的文件路径设置为真机Framework包下该文件的路径,生成的文件直接进行覆盖,生成完毕后,直接拷贝走使用
看最后 arm64 说明是真机,如此方法测试模拟器文件,需得到i386 x86_64才对。
2 接下来重点:合并 利用 lipo -create 真机路径 模拟器路径 -output 真机路径
![](https://img.haomeiwen.com/i3405147/6f0a6aa568d903d8.png)
合并成功 因为咱们是合并到真机上面了 故将真机里面的framework拖入到项目中 就能同时使用真机和模拟器了
五 使用
1 导入另一个Xcode项目中,我们打开这个framework看看,发现只有Headers,里面只有.h。
![](https://img.haomeiwen.com/i3405147/e3ebf316fd1a05c2.png)
2 引入头文件:
![](https://img.haomeiwen.com/i3405147/649500af7dc6ecea.png)
3 我们实例化一个实例对象,然后就可以让这个实例对象调取相应的方法了
![](https://img.haomeiwen.com/i3405147/185d18e44582a1f1.png)
到此,完成Framework的制作和使用。
————————————————
参考文章「哈皮吖」:https://blog.csdn.net/u013983033/article/details/83026218