iOS-子模块

作者: 618ecb324f60 | 来源:发表于2016-08-10 17:08 被阅读227次

多图预警~

无关图片

前言

随着业务的增多,app的模块必然增多,开发也会拆分出相应的小组负责维护某些模块,这时候很有必要将模块从主的代码中抽取成子工程。

子工程

  • 子工程创建成Static Library
    也可以创建成Framework,但是xib引用图片资源就不方便了
ModuleA.png
  • 子工程创建Bundle Target
    Static Library不能处理资源,需要单独建立一个Bundle Target收集资源。
    创建好Target记得给Lib Target添加依赖,在生成.a的同时生成Bundle.Bundle,如图:
ModuleABundle.png
  • 资源分类
    在创建新的文件是,要加入到对应的Target中,否则会有奇怪的问题。
code.png
source.png
xib 中使用的图片都是在MainBundle中搜索,
现在把资源打包到子Bundle就引用不到,
需要在集成到主工程的时候,
通过脚本把子Bundle内的资源移动到MainBundle中,
下文介绍主工程再作说明

如此炮制做出其他的子工程

此处省略N字。。。

主工程

  • 引用子工程
    手动拖动子工程的.xcodeproj文件引用到主工程中,结束后如下图:
Main.png
  • 配置
    1.设置Target依赖
MainDepedency.png

2.search path

MainSearchPath.png

3.other link flags
$(inherited)很有用,特别是在使用Cocoapods的时候
-all_load是强制加载子工程和Class相关的文件,因为有时候使用NSClassFromString()会找不到class
-ObjC防止子工程存在分类导致的运行时闪退

MainLink.png

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.png

Run查看效果:

MainBuild.png

.app内部资源:

MainApp.png

模拟器:

MainiPhone.png

随着子工程的越来越多,越来越大,管理就很有必要,稍后补上Cocoapods管理子工程。
最后:这里是demo
最后的最后:如果喜欢还请点赞~~

相关文章

网友评论

本文标题:iOS-子模块

本文链接:https://www.haomeiwen.com/subject/hfhjsttx.html