苹果系统上做linux开发,iOS开发:制作一个“真框架”项目

在项目开发中,共享代码是很常见的。

由于iOS的限制,我们无法以“动态库”的形式共享代码。除了以源代码方式,我们只能选择静态库来共享代码。

“真框架”项目以编译后的二进制形式共享代码,本质上还是一种静态库。但由于Xcode的限制(没有提供相应的项目模板),要以框架的形式编译出静态库,仍然十分麻烦。

首先,你需要下载 iOS Universal Framework Mk 7。解压elc-ELCImagePickerController-b5357fa.zip。在解压目录下,打开终端运行RealFramework目录(即“真框架”)下的install.sh脚本。真框架就会安装到Xcode中。

注意:install.sh脚本需要root权限。

一、创建“真框架”项目

打开Xcode4.2,你现在创建一个Static iOSFramework项目了。

560403b802977e2145e8e0f82e5d4431.png

输入项目名称,如TestFramework。

现在我们准备把一个正常的Application项目封装为“真框架”项目。这个正常的Application项目可以独立运行,拥有自己的window、viewcontroller和图形界面。

当然,你手上可能拥有别的Application项目,你完全可以把自己的Application项目封装为“真框架”。

把这个Application项目的资源:.h文件、.m文件、.xib文件、.png文件、.plist文件,甚至是数据库文件都拖到TestFramework项目中来,如下图所示:

eb0bcbc54eb2d850ce58720c466a7529.png

277d4173ae5b0224dbe4a21e6077eed5.png

打开Target的Build Phases,可以看到CopyHeaders的Project段包含了项目所有的头文件:

dd50f14c3c4f3e8b721889815b7cce5a.png

将所需头文件拖到Public段。凡是使用该框架时要用到的头文件都应该声明为Public。这里,为图省事,我把所有头文件都声明为Public了。

然后是框架的引用。这很简单,把Application中用到的框架都声明在“真框架”项目的Link Binary With Libaries中。如下图所示。

daa5bf736143649285bbbe4fc006c449.png

然后Build项目。编译结果将放在“{USERNAME}/Library/Developer/Xcode/DerivedData/{PROJECT_NAME_AND_RANDOM_CRAP}/Build/Products/{BUILD_TYPE}”目录下。每个BUILD_TYPE目录下都有一个.embeddedframework和一个.framework文件。其中.framework只包含代码,.embeddedframework除代码外还包括资源。一般使用.embeddedframework。

注意,有时候编译出现“UILable 类型未声明”之类的错误。这是因为在Application项目中,默认是包含UIKit头文件的,而“真框架”项目却未包含UIKite头文件,所有的UIKit类型都不能被Xcode正确识别。我们只需要在.pch文件中加入“#import ”语句即可。

二、使用“真框架”

很简单,新建一个Application项目,将.embeddedframework文件(其实是一个文件夹)直接拖到项目文件夹中:

4bd4458155831fa2ed513644b2a63eba.png

在TestFramework.embbeddedframework中,已经包含了TestFramework.framework,同时还有一个Resources目录,包含了真框架用到的所有资源。

查看Target的Builder Phases,你可以发现TestFramework.framework框架已经被包含进LinkBinary with Libraries了。

当然,由于“真框架”并不会把依赖的库编译到框架文件中(仅仅是引用),我们还必需在项目中加入TestFramework框架所用到的其他库和/框架(图中所列的库/框架因具体项目而异):

4afe4c5c6ba14f83c655101901ebfd44.png

现在,我们就可以在Application中使用真框架了:

#import

⋯⋯

System* vc=[[Systemalloc]init];

self.window.rootViewController=vc;0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值