iOS中制作动态链接库Framework
2016-03-14 17:46
543 查看
这几天在做个SDK遇到了很多问题,现在做完了想把制作Framework的过程分享出来(我这个SDK中也包含了其他的第三方很多Framework,所以踩了很多坑)
首先需要创建个Framework工程:
然后会有个“工程名.h”文件,有这么一句话:
In this header, you should import all the public headers of your framework using statements like #import <PayFramework/PublicHeader.h>
所以你需要这么引用你想暴露的头文件:
#import <PayFramework/FWPay.h>
#import <PayFramework/FWorder.h>
#import <PayFramework/FWPayManager.h>
然后看下面的图:
在public中的是你想暴露出去的头文件,在project中的是你隐藏的文件,在public中的头文件中你不能引用你未暴露的文件,若需要使用你可以在.m文件中引用.
如果你的工程中含有第三方的Framework你需要在Copy Files中添加进去。Copy Files中一般都隐藏的你可以通过点击左上角的+添加选:New Copy Files Phases。
然后看图:
在Destination中选择Frameworks 然后在Name中添加第三方的Framework
有的时候你的Framework或许会需要适应低版本你可以这么做:
在Build Settings中选择Deployment:
然后为了方便他人的使用你可以把系统的Framework添加到你的工程中:
最后为了可以在真机上运行你的Framework你需要选择:Build only Device 然后快捷键common + B来编译你的工程这样你会得到一个Framework它可以运行在armv7和arm64指令集中
然后选iPhone 4s编译你的工程可以得到一个能够运行在i386指令集的Frmework
然后选iPhone 6编译你的工程可以得到一个能够运行在x86_64指令集的Frmework
你可以同过命令:lipo -info ...路径/PayFramework查看Framework的信息
用命令lipo -create 路径1/PayFramework 路径2/PayFramework -output PayFramework
合并Framework
如:
lipo -create /Users/stone/Desktop/支付打包测试/6/PayFramework.framework/PayFramework /Users/stone/Desktop/支付打包测试/Debug-iphoneos/PayFramework.framework/PayFramework -output PayFramework
当在新工程你使用自己创建的Framework时可以在General下的Embedded Binaries下添加你的动态链接库:
或者你也可以将动态库当做一个资源文件使用在Build Phases中的Copy Bundle Resources中添加你的动态库,然后就可以用bundle的方式使用动态库了(在此之前你获取会需要手动将动态库添加到自己的沙盒中),这种方式添加的动态库要这么使用:
首先需要创建个Framework工程:
然后会有个“工程名.h”文件,有这么一句话:
In this header, you should import all the public headers of your framework using statements like #import <PayFramework/PublicHeader.h>
所以你需要这么引用你想暴露的头文件:
#import <PayFramework/FWPay.h>
#import <PayFramework/FWorder.h>
#import <PayFramework/FWPayManager.h>
然后看下面的图:
在public中的是你想暴露出去的头文件,在project中的是你隐藏的文件,在public中的头文件中你不能引用你未暴露的文件,若需要使用你可以在.m文件中引用.
如果你的工程中含有第三方的Framework你需要在Copy Files中添加进去。Copy Files中一般都隐藏的你可以通过点击左上角的+添加选:New Copy Files Phases。
然后看图:
有的时候你的Framework或许会需要适应低版本你可以这么做:
在Build Settings中选择Deployment:
然后为了方便他人的使用你可以把系统的Framework添加到你的工程中:
最后为了可以在真机上运行你的Framework你需要选择:Build only Device 然后快捷键common + B来编译你的工程这样你会得到一个Framework它可以运行在armv7和arm64指令集中
然后选iPhone 4s编译你的工程可以得到一个能够运行在i386指令集的Frmework
然后选iPhone 6编译你的工程可以得到一个能够运行在x86_64指令集的Frmework
你可以同过命令:lipo -info ...路径/PayFramework查看Framework的信息
用命令lipo -create 路径1/PayFramework 路径2/PayFramework -output PayFramework
合并Framework
如:
lipo -create /Users/stone/Desktop/支付打包测试/6/PayFramework.framework/PayFramework /Users/stone/Desktop/支付打包测试/Debug-iphoneos/PayFramework.framework/PayFramework -output PayFramework
当在新工程你使用自己创建的Framework时可以在General下的Embedded Binaries下添加你的动态链接库:
或者你也可以将动态库当做一个资源文件使用在Build Phases中的Copy Bundle Resources中添加你的动态库,然后就可以用bundle的方式使用动态库了(在此之前你获取会需要手动将动态库添加到自己的沙盒中),这种方式添加的动态库要这么使用:
NSString *documentsPath = [NSString stringWithFormat:@"%@/Documents/FWPaySdk.framework/FWPaySdk",NSHomeDirectory()]; NSError *err = nil; NSBundle *bundle = [NSBundle bundleWithPath:documentsPath]; if ([bundle loadAndReturnError:&err]) { NSLog(@"bundle load framework success."); } else { NSLog(@"bundle load framework err:%@",err); } Class worder = NSClassFromString(@"FWorder"); FWorder * order = (FWorder *)[[worder alloc] init];
相关文章推荐
- iOS Use Auto Layout Size Classer
- iOS 打包出现 Your session has expired. Please log in.
- CocoaPods安装与使用
- iOS 高效添加圆角效果实战讲解
- iOS动画
- iOS搭建CI持续集成环境
- ios 项目中的全局、局部、成员、属性变量
- 分享iOS效率开发——Xcode优秀插件(持续更新)
- iOS 清理缓存
- iOS开发——打开手机相册,获取图片
- 苹果开发:开发证书都显示“此证书的签发者无效”的解决方法
- iOS 蓝牙 技术
- iOS人脸识别
- 键盘的打开与关闭
- iOS 指纹识别
- IOS Layer的使用
- ios 音频队列实现录音和播音(转)
- iOS动画 实现音乐振动条
- iOS国际化
- BSP 概述(与BIOS对比理解)