使用Xcode5创建自己的Framework
来源:互联网 发布:java 二进制流 编辑:程序博客网 时间:2024/04/30 21:23
在做了一定数量的项目或写了一定量的代码以后,不知不觉我们会积累了很多常用的方法,函数等,这个时候应该把它们从项目中抽离出来,从而在日后的项目中提高开发的效率,为此框架应运而生。本文就说下我参照网上的一些文章,自己使用Xcode 5建立一个自己的框架的过程。环境是Mac OS X 10.9,Xcode 5.0.2。
1.打开Xcode新建一个工程,模板如下:
2.然后是工程名,路径等。
3.工程目录结构如下:
把JuliaCoreFramework,JuliaCoreFrameworkTests删掉(Move to trash,不用纠结了),再把两个Target移除,如下:
这个时候会有个对话框弹出来,先不用理会它,Cancel。
删除后目录结构如下(清爽多了):
4.把之前的Scheme删掉,操作如下:
5.现在Add Target,操作如下:
可以看到和刚才相同的对话框弹了出来,选择Bundle模板:
然后是工程名等常规设置。
完成后,工程目录见下图,可以看到之前被删除的小伙伴都回来了:
打开预编译文件,将其中的代码全部注释掉:
6.下面来到最麻烦的阶段,因为要进行一系列的设置。
在Targets中点击JuliaCore,打开Build Phases选项卡。
首先是Architectures:
(1)将JuliaCore Target下(这里有Resolved,JuliaCore,JuliaCoreFramework和iOS Default等几项,只需要设置JuliaCore该列就可以了,下同)的Architectures修改为armv7,armv7s,如果选择了下面的armv64,那么后面的编译或者是导入类库使用的编译都会出现问题,博主之前就被卡在这里了。还是上张图:
(2)将Base SDK改为Latest iOS(iOS 7.0)
完成后如下图:
接着是Deployment:
(1)将OS X Deployment Target设置为Compiler Default
(2)将Targeted Device Family设置为iPhone/iPad
(3)将iOS Deploment Target设置为你想要的版本,这里貌似设置的是要求的最低版本吧,博主就设了个6.0
完成后如下图:
再到Linking:
(1)将Dead Code Stripping设置为NO
(2)将Link With Standard Libraries设置为NO
(3)将Mach-O Type设置为Relocatable Object File
完成后如下图:
然后是Packaging,将Wrapper Extension设置为framework:
打开Info选项卡,将Bundle OS Type Code设置为FMWK:
7.现在可以深呼吸一口气了,因为终于恶心完了。现在我们可以真正地往框架中添加属于我们的代码了。例如,新建一个JCIdentifier类,记住选中Target:
8.然后写一些方法,实际上就是我们要留给外部调用的接口。例如:
9.再次打开Julia Core Target的Build Phases,通过Xcode菜单添加一个Phases,操作如下:
在Copy Headers中的Project中添加JCIdentifier.h:
再将JCIdentifier.h拖到上面的Public中,这就是我们向外界公开的头文件。
10.终于配置好了,各种蛋疼啊。
下面选中iOS Device或模拟器,注意不要选择真机(否则你Build出来的框架只能在该机子中跑),然后是Command + B,Build成功后可以看到Products下面的JuliaCore.framework变成白色了。
如果还是红色,就换一种设备,例如将iOS Device换成模拟器,或把模拟器换成iOS Device,再Build一次。
如无意外,我们的产品就出来了,在Finder中打开它,如:
用多列视图来观察下其目录:
可以看到有两个文件夹Debug-iphoneos和Debug-iphonesimulator,两个文件夹下都有对应的JuliaCore.framework文件,也就是刚刚我们打包的产品(注意要分别在iOS Device和iOS Simulator的情况下Build一次),然后选择对应的文件,例如如果想在真机跑将拷贝iphoneos下的framework文件,如果想在模拟器中跑就拷贝iphonesimulator中的文件。
11.最后?当然是使用我们自己的framework给出的接口啦。
新建一个工程,然后将我们的framework导入到工程中。导入头文件,例如:
1.
#
import
<JuliaCore/JCIdentifier.h>
调用头文件中的接口,例如:
01.
- (
void
)viewDidLoad
02.
{
03.
[
super
viewDidLoad];
04.
05.
JCIdentifier *jcObject = [[JCIdentifier alloc] init];
06.
NSString *jcID = [jcObject frameworkIdentifier];
07.
NSString *message = [NSString stringWithFormat:@
"This is my %@"
, jcID];
08.
09.
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@
"Hey"
10.
message:message
11.
delegate:nil
12.
cancelButtonTitle:@
"That's cool"
otherButtonTitles:nil, nil];
13.
[alertView show];
14.
}
Run,终于成功了:
等等,编译出错了,用的是64位的iPhone模拟器。对了,还要保持工程中Architectures中的设置和原来的框架保持一致呢,设置一下吧,armv7和armv7s:
Run,无错通过,大功告成。
其实博主以前在用64位的iPhone模拟器跑lame库的时候也出现了编译错误,而32位的iPhone模拟器无错通过,解决方法就在于此。
可能还有读者担心真机跑是否会成功,博主在自己的iPhone 5上跑过(记得将framework文件改成iphoneos文件夹下的对应文件),没问题,至于64位的设备,由于博主没有设备,所以无法给出一个确切的答案。
拥有自己的Framework怎么说都是件很酷的事,更何况它还是我们提高开发效率的忠实小伙伴呢,好好壮大并加以利用吧。
- 使用Xcode5创建自己的Framework
- iOS XCode5下制作自己的FrameWork
- 使用Xcode 5创建自己的Framework
- 创建自己的framework
- 创建自己的framework
- 创建自己的cocoa framework。
- 创建自己的cocoa framework
- 创建自己的cocoa framework方法
- IOS:导入自己创建的framework出错
- IOS_创建自己的Framework静态库
- 创建自己的Framework静态库
- 在Android的Framework中自己创建Exception并使用的方法
- xcode5.1的使用
- 自己创建Cocoa touch FrameWork
- 读译文之总结------创建自己的framework
- Xcode5使用遇到的问题
- XCODE5 取消ARC的使用
- Xcode5制作Framework
- 做web服务器提供apk下载,部分浏览器下载时后缀名为.html
- E20-335的Symmetrix解决方案专家考试实施工程师 - 考试说明
- E20-007数据科学及大数据分析考试
- C#控制台操作串口实例例程
- 如何设置Domino的网络域索引
- 使用Xcode5创建自己的Framework
- hdu1072
- list view特殊属性
- E20-007数据科学及大数据分析的认证考试概况
- E20-007数据科学及大数据分析概述考试
- 百度员工离职总结:如何做个好员工?(都是大实话 )
- 类的非静态成员函数做boost::thread参数
- JDeveloper 更改JDevRuntime位置
- 【Leetcode长征系列】Sort Colors