无关图片多图预警~
前言
随着业务的增多,app的模块必然增多,开发也会拆分出相应的小组负责维护某些模块,这时候很有必要将模块从主的代码中抽取成子工程。
子工程
- 子工程创建成Static Library
也可以创建成Framework,但是xib引用图片资源就不方便了
- 子工程创建Bundle Target
Static Library不能处理资源,需要单独建立一个Bundle Target收集资源。
创建好Target记得给Lib Target添加依赖,在生成.a的同时生成Bundle.Bundle,如图:
- 资源分类
在创建新的文件是,要加入到对应的Target中,否则会有奇怪的问题。
source.png
xib 中使用的图片都是在MainBundle中搜索,
现在把资源打包到子Bundle就引用不到,
需要在集成到主工程的时候,
通过脚本把子Bundle内的资源移动到MainBundle中,
下文介绍主工程再作说明
如此炮制做出其他的子工程
此处省略N字。。。
主工程
- 引用子工程
手动拖动子工程的.xcodeproj文件引用到主工程中,结束后如下图:
- 配置
1.设置Target依赖
2.search path
MainSearchPath.png3.other link flags
$(inherited)很有用,特别是在使用Cocoapods的时候
-all_load是强制加载子工程和Class相关的文件,因为有时候使用NSClassFromString()会找不到class
-ObjC防止子工程存在分类导致的运行时闪退
4.处理子工程资源
在Build Phases中添加脚本块
根据自己的实际情况处理,我的demo中只有三个子工程拥有Bundle,处理如下:
modules=( "ModuleA" "ModuleB" "ModuleC" )
cd $CONFIGURATION_BUILD_DIR
for file in ${modules[@]}
do
if [ -d "$file""Bundle.Bundle" ]
then
rm ${file}"Bundle.Bundle/info.plist"
cp -rf ${file}"Bundle.Bundle/" $CONTENTS_FOLDER_PATH
fi
done
添加之后的效果:
MainScript.pngRun查看效果:
MainBuild.png.app内部资源:
MainApp.png模拟器:
MainiPhone.png随着子工程的越来越多,越来越大,管理就很有必要,稍后补上Cocoapods管理子工程。
最后:这里是demo
最后的最后:如果喜欢还请点赞~~
网友评论