iOS开发库之(四):工程和库联调
问题
我们在使用这个自己创建库或者SDK的时候会遇到调试的问题,我们总可可能每次把framework或者.a静态库编译一次然后又拖进工程调试一次吧,这是不现实的,所以今天教大家怎样实现工程和库联调。
解决
方式有两种:工程内部拖入framework和相同workspace下调试
第一种:工程内拖入framework
首先新建我们的主工程KODDemo:
Snip20170904_48.png Snip20170904_49.png再新建库工程KODSDKFramework,此处以framework为例:
PS:这里是直接创建framework的,默认是动态库,详细请看:
iOS开发库之(二):静态库Framework的创建
iOS开发库之(一):动态库的创建和调试
然后把库工程KODSDKFramework关闭掉,留下主工程KODDemo,如果主工程KODDemo关闭了,那么再次打开主工程KODDemo:
Snip20170904_52.png进入刚刚的库工程KODSDKFramework文件目录,找到.xcodeproj这个文件:
Snip20170904_55.png鼠标左键单击此工程文件KODSDKFramework并拖入到工程KODDemo中,如下:
Snip20170904_56.png Snip20170904_57.pngPS: 注意此处会出现截图中的小箭头是正常的,那么表示可以进行联调了,但是如果我们之前在打开库工程KODSDKFramework再拖入到工程中是会报错的,并且没有小箭头,所以一定要关掉KODSDKFramework工程,报错如下图:
Snip20170904_60.png Snip20170904_59.png具体错误:
/Users/KODIE/Desktop/KODSDKFramework/KODSDKFramework.xcodeproj Couldn't load KODSDKFramework.xcodeproj because it is already opened from another project or workspace
遇到这个错误也不要怕很简单,就是一个工程不要同时打开嘛,那就把之前的库工程KODSDKFramework关掉,然后再次打开主工程KODDemo就好了,So easy!!!
第二种:相同workspace下调试
首先先创建一个workspace:
Snip20170904_63.png Snip20170904_64.png Snip20170904_68.png创建主工程KODDemo和库工程KODSDKFramework因为以上第一种我们已经介绍了怎么创建那我们这里就省略了
Snip20170904_67.png打开workspace,虽然毛都没有但是还是要打开:
Snip20170904_69.png将主工程KODDemo和KODSDKFramework的.xcodeproj分别拖入到workspace中,注意这里两个工程是并齐的位置,并且拖入时要关闭KODDemo和KODSDKFramework工程:
Snip20170904_70.png Snip20170904_71.png Snip20170904_73.pngPS: 如果此时你把库工程KODSDKFramework拖入到如下的位置那么和第一种无异了:
Snip20170904_74.png配置:
好的,新建好工程和拖入之后没问题那就是要做下配置了,配置很简单都是在主工程KODDemo中配置如下的配置即可(方式一二皆是如此):
第一种:
Snip20170904_76.png Snip20170904_77.png Snip20170904_78.png第二种:
Snip20170904_79.png Snip20170904_80.png Snip20170904_81.png这样就配置完了,但是请注意我们每编辑一次库就需要编译一次库,然后再运行主工程才能看到效果,要不然还是上次编译成功的库的效果。
使用中遇到的问题:
当我们在进行库和工程联调的时候,如果出现如下报错:
Snip20170904_82.png具体错误:
/Users/KODIE/Desktop/KODDemo/KODDemo/ViewController.m:10:9: Could not build module 'KODSDKFramework'
遇到这个问题一般都是以下问题造成的:
Snip20170904_83.png改成以下即可,因为这个公开的文件就是暴露的头文件,而这个头文件中引用了我们其他的文件,但是其他的文件并没有暴露出来就会有问题:
Snip20170904_84.png记得改完之后编译以下库,然后再编译运行主工程就OK了。