转载地址 :(http://www.ganlvji.com/xcode_subproject_project_dependency/)
背景:由于创建一个app的时候需要引入大量的依赖三方库或者自己写的工具类,每次新建app这些事情都需要大量的时间。所以,就考虑建一个公共工程,每次新建项目,只是需要依赖这个工程就行了。
思路设计:①BaseApp,用于存放公共的库。②BaseAppSample用于写demo和示例,方面别人在使用的时候查看和借鉴。
具体步骤:
1、创建BaseApp工程,注意这里被依赖的工程要是Static Library。
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.04.06.png[/img]
2、创建BaseAppSample工程。在BaseAppSample的framework group上面右键,添加文件,选中BaseApp.xcodeproj,建立依赖关系。
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.06.10.png[/img]
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.06.27.png[/img]
行成如上图所示的依赖关系。
3、这样BaseAppSample里面就可以使用BaseApp里面的类了么?开始我以为可以了,可是我错了。在BaseAppSample里面import相关的类会出现找不到的error,会编译错误。需要进行下面的操作:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.10.25.png[/img]
在Header Search Paths 里面添加引入头文件的路径,如上所示,这样就不会出现编译的error了。
4、等等,好像以为正确,comand + r。Oh,NO,还是有错误。还是编译还出现找不到相关的文件。
这个时候可以判断的是,编译的结果没有能够正确的依赖,进行下面的步骤
添加target的依赖关系,保证编译BaseAppSample的时候先编译BaseApp。
选中BaseAppSample Target,然后选中其Build phases选项,添加BaseApp target
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.15.40.png[/img]
然后把lib也引入依赖中,如下所示:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.15.55.png[/img]
5、如果被依赖包(BaseApp)中有图片或者依赖文件怎么办?
要把相关的依赖图片copy出去:选中BaseApp target,进入Build phases选项,找到最下面的copy file栏,添加相关的文件:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.20.15.png[/img]
到这一步,只要command+r,BaseAppSample中就能够正常地引入BaseApp里面的功能了。
以后有公共的组件,只是需要添加到BaseApp中,其他依赖的功能都能够使用了。
为了维护方便,可以把BaseApp用单独的SVN或者Git来维护。
分割线追加:
————————————————————————————————————————
今天右发现新的问题,如果存在category的时候,使用category会导致Crash
解决办法是在Sample里面添加编译的命令:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-07-下午3.39.16.png[/img]
在Other Linker Flags添加 -Objc和-all_load选项,保证category能够被正常的引入。
原文地址:[url]http://www.ganlvji.com/?p=128[/url]
背景:由于创建一个app的时候需要引入大量的依赖三方库或者自己写的工具类,每次新建app这些事情都需要大量的时间。所以,就考虑建一个公共工程,每次新建项目,只是需要依赖这个工程就行了。
思路设计:①BaseApp,用于存放公共的库。②BaseAppSample用于写demo和示例,方面别人在使用的时候查看和借鉴。
具体步骤:
1、创建BaseApp工程,注意这里被依赖的工程要是Static Library。
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.04.06.png[/img]
2、创建BaseAppSample工程。在BaseAppSample的framework group上面右键,添加文件,选中BaseApp.xcodeproj,建立依赖关系。
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.06.10.png[/img]
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.06.27.png[/img]
行成如上图所示的依赖关系。
3、这样BaseAppSample里面就可以使用BaseApp里面的类了么?开始我以为可以了,可是我错了。在BaseAppSample里面import相关的类会出现找不到的error,会编译错误。需要进行下面的操作:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.10.25.png[/img]
在Header Search Paths 里面添加引入头文件的路径,如上所示,这样就不会出现编译的error了。
4、等等,好像以为正确,comand + r。Oh,NO,还是有错误。还是编译还出现找不到相关的文件。
这个时候可以判断的是,编译的结果没有能够正确的依赖,进行下面的步骤
添加target的依赖关系,保证编译BaseAppSample的时候先编译BaseApp。
选中BaseAppSample Target,然后选中其Build phases选项,添加BaseApp target
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.15.40.png[/img]
然后把lib也引入依赖中,如下所示:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.15.55.png[/img]
5、如果被依赖包(BaseApp)中有图片或者依赖文件怎么办?
要把相关的依赖图片copy出去:选中BaseApp target,进入Build phases选项,找到最下面的copy file栏,添加相关的文件:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-02-下午10.20.15.png[/img]
到这一步,只要command+r,BaseAppSample中就能够正常地引入BaseApp里面的功能了。
以后有公共的组件,只是需要添加到BaseApp中,其他依赖的功能都能够使用了。
为了维护方便,可以把BaseApp用单独的SVN或者Git来维护。
分割线追加:
————————————————————————————————————————
今天右发现新的问题,如果存在category的时候,使用category会导致Crash
解决办法是在Sample里面添加编译的命令:
[img]http://www.ganlvji.com/wp-content/uploads/2013/04/屏幕快照-2013-04-07-下午3.39.16.png[/img]
在Other Linker Flags添加 -Objc和-all_load选项,保证category能够被正常的引入。
原文地址:[url]http://www.ganlvji.com/?p=128[/url]