iOS经典

iOS开发库之(四):工程和库联调

2017-09-04  本文已影响200人  KODIE

问题

我们在使用这个自己创建库或者SDK的时候会遇到调试的问题,我们总可可能每次把framework或者.a静态库编译一次然后又拖进工程调试一次吧,这是不现实的,所以今天教大家怎样实现工程和库联调。

解决

方式有两种:工程内部拖入framework和相同workspace下调试

第一种:工程内拖入framework

首先新建我们的主工程KODDemo:

Snip20170904_48.png Snip20170904_49.png

再新建库工程KODSDKFramework,此处以framework为例:
PS:这里是直接创建framework的,默认是动态库,详细请看:
iOS开发库之(二):静态库Framework的创建
iOS开发库之(一):动态库的创建和调试

Snip20170904_50.png Snip20170904_51.png

然后把库工程KODSDKFramework关闭掉,留下主工程KODDemo,如果主工程KODDemo关闭了,那么再次打开主工程KODDemo:

Snip20170904_52.png

进入刚刚的库工程KODSDKFramework文件目录,找到.xcodeproj这个文件:

Snip20170904_55.png

鼠标左键单击此工程文件KODSDKFramework并拖入到工程KODDemo中,如下:

Snip20170904_56.png Snip20170904_57.png

PS: 注意此处会出现截图中的小箭头是正常的,那么表示可以进行联调了,但是如果我们之前在打开库工程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.png

PS: 如果此时你把库工程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了。

上一篇下一篇

猜你喜欢

热点阅读