由于之前的打包不成功,后来就想进一步弄下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。
2、创建功能类。
首先创建一个继承自NSObject的HelloWorld类
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下更改几个参数。
因为如果集成的项目支持 bitCode 就设置成yes 不支持就设置成NO
5、设置Headers
将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
三 打包Framework
方法有很多 我们这里只说一种
--------真机打包
1.选中Generic iOS Device,编译程序 (只支持手机格式)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
3.将framework拷贝出来保存,这就是我们最终制作的framework。
------------模拟器打包
1.选中模拟器,编译程序 (只支持模拟器格式)
2.编译成功后,选中图中所标示的framework,然后右键show in finder。
四 合并framework
为了framework 支持真机 也支持模拟器 将两个framework 合并
我们通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
1 输入 lipo -info加真机上的这个文件路径 如图
然后回车
需要将真机和模拟器framework包中这个文件合并
lipo -create {文件2路径} -output ${生成的文件路径}
可以直接将最终生成的文件路径设置为真机Framework包下该文件的路径,生成的文件直接进行覆盖,生成完毕后,直接拷贝走使用
看最后 arm64 说明是真机,如此方法测试模拟器文件,需得到i386 x86_64才对。
2 接下来重点:合并 利用 lipo -create 真机路径 模拟器路径 -output 真机路径
合并成功 因为咱们是合并到真机上面了 故将真机里面的framework拖入到项目中 就能同时使用真机和模拟器了
五 使用
1 导入另一个Xcode项目中,我们打开这个framework看看,发现只有Headers,里面只有.h。
2 引入头文件:
3 我们实例化一个实例对象,然后就可以让这个实例对象调取相应的方法了
到此,完成Framework的制作和使用。
————————————————
参考文章「哈皮吖」:https://blog.csdn.net/u013983033/article/details/83026218