iOS Workspace内多project开发
前言
hihi,勇敢的小伙伴儿们大家好,好久不见!之前我写过一篇“多target开发”内容的文章,当时是第一次看见同事大哥哥用多target这种方式实现项目多地区的开发,大大地提高工作效率,在有限的开发时间内出色地完成了多个App的开发,这让我不禁心生敬佩,所以对此进行了小小研究。原来iOS的世界中我还有那么多不足,那么多未知世界需要去探索...
今天来跟大家分享的是同一个workspace中多个project开发。但今天只是入门,就是简单的告诉大家如何在workspace中引入创建多个project以及创建framework和静态库添加到workspace中的方式。
话不多说,我们开始今天的学习吧!
正文
习惯了command+shift+N创建一个新项目的你,是否注意到了实际上Xcode还有很多其他的功能,为什么我这么说,我们可以在Xcode的菜单栏中File的New的子菜单一探究竟。
熟悉的快捷键是创建Project的,今天我们来看下面的Workspace。通过上面的快捷键介绍,我们可以尝试按control+command+N来新建一个workspace工作空间,如果你按不出来,很可能和我一样快捷键冲突了,我的是印象笔记快捷键冲突,我手动将印象笔记设置中冲突的快捷键修改了,就可以顺利出现创建workspace的界面了。
一、如何创建一个含有多个Project的workspace
1.创建Workspace
接下来,我们创建一个名为MultipleProject的workspace。
如图所示,空空如也。
接下来就要开始为其添加新的project啦~
2.创建Project,并添加到Workspace
创建Project的步骤我想大家都很熟练了~command+shift+N出现如图所示的界面。
取一个“ProjectA”的名字吧~
在下图所示的选框中选中我们最初创建的MultipleProject的workspace中。
选中之后如图所示,然后选择create创建按钮。
肉眼可见我们成功地将ProjectA加入了MultipleProject的workspace中。
3.添加现有Project到Workspace中
当项目中没有选中任何Project的时候通过点击Xcode的菜单栏File可以看到子菜单中有Add Files to “MultipleProject”。其中MultipleProject是我们创建的Workspace名称。
但是当我们创建完ProjectA并将其添加到MultipleProject中,我们发现MultipleProject中已经默认选中了ProjectA,这时候再点击Xcode的菜单栏File只能看到子菜单中有Add Files to "ProjectA"。其中ProjectA是我们前面创建的Project名称。
不要烦恼,这时候可以在Workspace的目录空白处点击右键选择Add Files to “MultipleProject”中。
点击按钮我们可以选中之前创建好的Project,我这里是ProjectB,选中其.xcodeproj文件将其添加到MultipleProject的workspace中。
添加好之后,我们可以清楚地看到MultipleProject中有两个project存在了,一个是ProjectA,另一个是ProjectB。
到此我们在workspace中加入多个project的问题已经解决了。
二、创建静态库,并添加到workspace中
1.创建静态库
通过File->New->Project,创建静态库。
取名叫StaticLibrary吧~
并将其加入到Workspace中~
我们在StaticLibrary中简单增加一个输出HelloWorld的方法。
#import <Foundation/Foundation.h>@interface StaticLibrary : NSObject+ (void)printWords;@end#import "StaticLibrary.h"@implementation StaticLibrary+ (void)printWords {NSLog(@"Hello World!");
}@end
现在我想在ProjectA中调用该方法。我们应该怎么做呢?
2.生成静态库
由于是静态库项目,我们首先需要将代码编译成静态库,这里需要注意几点:
1.编译需要选中静态库项目,即StaticLibrary,不要选成其他项目ProjectA或ProjectB。
2.需要设置scheme中的Run为Release版本。
3.需要确定真机或模拟器版本,在编译时选择合适的方式。
我选择虚拟机,因为我将要在虚拟机上运行,大家可以都编译试试~
在了解以上几点后,我们就开始着手生成静态库文件吧~
可以直接command+B直接编译,但是我们今天不用这种方式,还是从Xcode的菜单栏找到编译,至于为什么呢?因为升级Xcode13后,咱么找不到Product这个文件夹了,我们怎么找到生成好的静态库文件是个棘手的问题。如果你认为棘手,是因为没有仔细观察过Xcode菜单栏。现在让我们一起来观察下,我相信你也会知道在哪里找到build出来的静态库文件啦。
我们选择好项目之后在这里选择Build直接Build出静态库文件,再使用Build底下的Show Build Folder in Finder即可打开生成好的.a文件所在的文件夹。
由于我需要在模拟器使用,所以将模拟器文本对应的libStaticLiberary.a文件拖入到ProjectA目录下。
3.使用静态库
引入StaticLibrary库中的StaticLibrary.h头文件,在代码中调用printWords方法。现在run一下ProjectA项目(请注意修改成ProjectA项目哦)。我们可以看到控制台成功显示了 Hello World! 的字样,这说明什么?这说明我们成功啦!
四、创建Framework,并添加到Workspace中
1.创建Framework
选择File->New->Project,和创建静态库一样,选择Framework。
取一个喜欢的名字吧,我的就叫AFramework吧~
然后和静态库一样,添加到我们今天的主角MultipleProject的workspace中,如下图所示。
为了更好的演示,我们先在AFramework中创建一个自定义类,并实现类方法。
#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface Person : NSObject@property (nonatomic, copy) NSString *name;+ (void)sayHi;@endNS_ASSUME_NONNULL_END#import "Person.h"@implementation Person+ (void)sayHi {NSLog(@"Hi~");
}@end
我创建了一个Person类,想不出别的类,大家可以即兴发挥~
接下来我们到Build Phases中查看Headers下可以看到刚才创建的Person.h就在Project类目下。
我们也可以看到AFramework.h在Public下。众所周知,Public和Private的意思,所以外界可以直接访问AFramework文件,现在我们想让外界可以访问Person类,需要将Person.h移动到Public下面。
有两种方式,方式一是直接将Person.h拖拽到Public下面。
方法二是选中Person.h在检视面板中的Target Membership中进行更改。
然后在AFramework.h中导入Person.h文件
2. 使用Framework
我们找到ProjectA中的Project->General->Frameworks,Libraries,and Embedded Content,我们看到前面添加的静态库已经在其中。
我们就在这里添加AFramework.framework
接下来就可以像使用静态库或者系统库一样将framework导入到需要使用的文件中。
也可以引入#import <AFramework/Person.h>,都是可以的哦~
运行一下~
Hi~ 我们再一次成功啦~撒花✿✿ヽ(°▽°)ノ✿
iOS Workspace内多project开发相关推荐
- iOS应用内付费(IAP)开发步骤列表
iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...
- IOS应用内购买App开发完整流程
2019独角兽企业重金招聘Python工程师标准>>> 看了一些网上教程,基本上是老版本的了.我针对自己遇到的一些问题,结合官方文档把IAP(In-App Purchase)过程梳理 ...
- iOS应用内置付费详尽攻略
我最近正在制作的一个程序里面,我就决定先把程序免费(其中只包含一个故事),然后把更多的故事放在in-app purchase里面.在这篇教程里面,你将会学到如何使用程序内置付费来解琐本地程序里面的内容 ...
- iOS 应用内购买(In-App Purchase)之开发
iOS 应用内购买(In-App Purchase)之协议.税务和银行业务 使用IAP之前,需要签订协议,查看上面的链接. IAP开发 添加App内购项目 登录 iTunes Connect ,选择我 ...
- iOS通讯录,蓝牙,内购等开发系列
–系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系 ...
- 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营
编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具. ...
- 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...
编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主 ...
- 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C
2019独角兽企业重金招聘Python工程师标准>>> 编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应 ...
- Cocos2d-x使用iOS游戏内付费IAP(C++篇)
source file url: http://www.tairan.com/archives/5515 Cocos2d-x使用iOS游戏内付费IAP(C++篇) 前期准备 设备与账号 在开始编码之前 ...
最新文章
- Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
- python学习软件-python软件学习从入门到精通
- php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结
- 用“Web的思想”做PC客户端
- LeetCode 527. 单词缩写(Trie树)
- Asp.Net前台调用后台变量
- vsftpd出现500 OOPS: cannot change directory的解决办法
- C项目案例实践(0)-语言基础
- linux中的特殊符号 (|) 管道。
- Asp.net中Global.asax
- 团队作业三——项目思考
- Java方法——方法的重载
- 原生开发、H5开发和混合开发的区别
- 隔离变压器不触电原因
- Netlink的简介及使用方法
- TIOBE 11 月编程语言:Java 首次跌出前二;基于Pytorch的Kornia可微分计算机视觉库开源...
- 简述计算机桌面背景更换的流程,苹果电脑桌面壁纸怎么更换【详细步骤】
- swift 代码加载xib storyboard
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- 服务器安装360文档卫士,360文档卫士