https://www.jianshu.com/p/d146db167bf3

项目开发时经常会遇到个别模块想打包成framework的情况,传统的打包方式太繁琐,反复测试时很麻烦,不如一个项目管理来得方便。
这里记录一下用一个Workspace方式管理项目依赖的方式。由于图是两天前截的,按图码字,有疏漏之处还请见谅。

1.新建Workspace:

1.1 Xcode -> File -> New -> Workspace并放到Test文件夹下

2.新建TestProject和FrameworkProject:

2.1 Xcode -> File -> New -> Project,同样放在Test文件夹下

 
Test文件夹状态

2.2 在Xcode中将这两个Project添加到Workspace

 
Workspace状态

3.添加Target到FrameworkProject

3.1 FrameworkProject -> Targets -> [+]

 
添加Target

选择Cocoa Touch Framework

 
选择最下面的Framework

命名为TestFW,先不要选Embed in App

 
命名为TestFW

可以看到Targets下面新增了一个Framework

 
Targets

4.添加Framework到TestProject

4.1 TestProject ->Targets -> General -> Embedded Binaries -> [+]

 
添加Binaries

可以看到刚刚生Target的Products已经列了出来,选择TestFW.frameworkiOS

 
选择framework

framework嵌入成功

 
嵌入的framework

可以看到在Project中也显示出来了,不要在意红色,因为在编译TestProject时会先编译它依赖的framework,这也是这种方法建立项目依赖的方便之处,不需要额外手动编译framework。

 
嵌入的framework

如果看着不舒服,可以移动到项目的Frameworks文件夹(Tips:看不到Frameworks文件夹可以先随便嵌入一个系统库,比如UIKit.framework,然后再删掉,就可以看到Frameworks文件夹了)。

 
移动好的Framework

4.2 添加测试方法

这里举例添加方法到ViewController中,注意这是错误演示,下面会说明。

 
ViewController.h
 
ViewController.m

当然不要忘了在暴露的.h中#import "ViewController"

 
23.png

运行,发现报错,提示找不到ViewController,导致无法编译framework模块

 
找不到ViewController

原来是新增的Target中不包含ViewController这个类。
解决方法:选择ViewController.h -> TargetMembership -> 勾选TestFW

 
勾选TestFW

再次运行,发现helloFramework方法并没有调用,并且控制台输出提示ViewController这个class被两个类文件同时生成了,一个是TestProject项目,一个是TestFW这个framework。

 
控制台输出

解决方法:把两个ViewController其中一个改下名字就可以了,这里我把framework中的ViewController改名为TestViewController(当然里面的类名也一定要改啊)。

 
ViewController改为TestViewController

可以看到输出正常了。

 
hello
[重点] 所以说,自己生成的framework一定要一个特殊的类名前缀,否则很容易和项目中某个类冲突。

4.3 添加测试类
当然实际使用时基本不会使用默认的ViewController类,都会自己新建一个或几个类来实现。注意新建类时一定要选择对应的Target,否则就会出现无法编译的问题。

 
选择TestFW

自己添加类后,运行,依然报错?找不到helloFramework方法,什么鬼?

 
找不到方法

解决方法:FrameworkProject -> Targets -> TestFW -> Build Phases -> Headers,将Project中新增的方法,拖到Public下。否则编译器将新增的方法视为私有的,无法被TestFW.h引用。

 
移动到Public

移动后

 
Public

至此,就大功告成了。
当然,这种方法适用于将现有项目简单的打包,如果想从0完全新建framework,那在新建项目时直接选择Cocoa Touch Framework就好,这样会少生成很多AppDelegate之类的文件。

 
新建framework

最新文章

  1. Struts2+Spring+Hibernate框架整合总结详细教程
  2. 指定eclipse启动使用的JVM
  3. js中十进制数转换为16进制
  4. iisnode托管node
  5. 爱上MVC~为DisplayNameFor添加扩展,支持PagedList集合
  6. JavaWeb学习总结(五十)——文件上传和下载
  7. h264 profile & level
  8. visual studio code + Nodejs + Typescritpt + angularjs2 + bootstrap 环境搭建/Elementary os
  9. wenti
  10. boa安装
  11. 【风马一族_Android】Android学习
  12. Delphi XE5教程9:基本语法元素
  13. VS2010 ReportViewer导出文件下载保存不能识别文件类型
  14. Linux环境Eclipse + Tomcat + MySQL 构造J2EE方法开发环境
  15. UWP锁、解屏后无法响应操作
  16. 第 16 章 MySQL Cluster
  17. Django Haystack 全文检索与关键词高亮
  18. LeetCode(53)-Binary Tree Paths
  19. 【转】GB2312、GBK和UTF-8三种编码的简要说明
  20. [原]Universal Windows问题:winapifamily问题:WINAPI_PARTITION_DESKTOP问题:WINAPI_PARTITION_APP问题:WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)问题

热门文章

  1. OpenCV——仿射变换
  2. sql sever登录问题
  3. C语言 fgets
  4. Go初始化结构体数组/切片
  5. Codeforces 1204D2. Kirk and a Binary String (hard version) (dp思路)
  6. 如何将mongo查询结果导出到文件中
  7. IntelliJ IDEA 2017.3尚硅谷-----设置自动编译
  8. Java 动态代理实现
  9. SpringMvc中文件的上传
  10. Bug搬运工-Forerunner CRC error on 54SG/53SG3 triggers watchdog timeout crash