手动创建WorkSpace方式的iOS多工程联合编译包含Static Library
2016-06-30 15:19
501 查看
1、创建一个空的App Project
启动
Xcode点击
File->
New->
Project选择
Single View Application
取名为
TestMainApp
建立成功后关闭项目留待下一步使用
2、创建一个Static Project
启动
Xcode点击
File->
New->
Project选择
Cocoa Touch Static Library
取名为
TestStaticLibrary,放在跟刚才的
TestMainApp项目同一级目录下
3、创建一个WorkSpace关联刚才的两个项目
启动
Xcode点击
File->
New->
WorkSpace取名为
TestWorkSpace
创建成功打开后在左侧空空的导航栏中点击右键选择
Add Files to "TestWorkSpace"选项
在打开的目录中选择刚刚创建的
Project文件添加到
WorkSpace,如图所示:
同理添加
Static Library项目到
WorkSpace, 完成以后是这个样子的:
4、开始配置项目依赖关系
在
TestStaticLibrary项目的
TestStaticLibrary.h中添加一个方法
#import <Foundation/Foundation.h> @interface TestStaticLibrary : NSObject - (void)sayHello; @end
对应的
TestStaticLibrary.m中实现方法体
#import "TestStaticLibrary.h" @implementation TestStaticLibrary - (void)sayHello { NSLog(@"Hello! form Static Library Project"); } @end
下面开始生成静态库文件,选择要暴露给外部的头文件,选中
TestStaticLibrary项目的
Targets
TestStaticLibrary在右侧的窗口中选择
Build Phases点击左上角的加号选择
New Headers Phase,如图:
添加成功以后,展开
Headers有三个子分组
Public、
Private和
Project,直接把
TestStaticLibrary.h拖到
Public分类下,如图
:
再来添加
TestMainApp项目对
TestStaticLibrary的依赖,选中
TestMainApp项目,
Target选择
TestMainApp,右侧
Build Settings分类下,搜索
User Header Search Paths,添加
$(BUILT_PRODUCTS_DIR),勾选递归搜索选项
recursive,如下图
然后,按
Command + B键编译工程,看到下面红色的
libTestStaticLibrary.a文件变为黑色。
接着在选择
Build Phases分来,展开
Link Binary With Libraries,点击下面的加号,添加停开库文件引用,如图:
点击
Add按钮添加。
最后可以在
ViewController.m文件中,引入静态库暴露出来的头文件,
TestStaticLibrary.h,然后在
viewDidLoad方法中添加如下代码进行测试。
- (void)viewDidLoad { [super viewDidLoad]; TestStaticLibrary *test = [[TestStaticLibrary alloc] init]; [test sayHello]; }
编译运行项目,可以看到控制台打印的信息,证明成功了。
补充信息
Bundle打包和引用
WorkSpace中的
Bundle类型
target不能自动引用,需要手动加入子项目中的目标
Bundle(注意为
WorkSpace相对路径)
另外一种办法是使用脚本拷贝到指定目录,未使用,不做详述。
头文件的引用问题
子项目的
.a文件默认放在
$(BUILT_PRODUCTS_DIR)下
(Debug-iphoneos,Relese-iphoneos),
头文件默认放在
$(BUILT_PRODUCTS_DIR)/include/$(PRODUCT_NAME)目录下,
这样头文件就有两份,在不同的目录下,都是在
*-iphoneos目录下,而
User Head Search Path设置为
$(BUILT_PRODUCTS_DIR),在切换
iphonesimulater编译时,就无法搜索到头文件。
(
.a文件的引用由
Workspace自动管理的,没有这问题)
解决办法:
首先修改头文件copy路径,原为:
/include/$(PRODUCT_NAME),修改为:
../include/$(PRODUCT_NAME)
User Head Search Path设置为
$(BUILD_DIR)/include,勾选
recursive循环搜索,
Always Search User Path设置为
YES。
OK,这样就可以随心所欲的选择
iphoneos和
iphonesimulater进行构建。
转自:http://www.softdevblog.com/2016/03/29/iosduo-gong-cheng-lian-he-bian-yi-bao-han-staticlibrary/
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法