在组件化工程中,有些代码是我们不想暴露给合作伙伴的,所有我们会用库的方式实现代码的共享,因为这里涉及到了资源文件,所以选择framework类型的库,static 和 dynamic都在此进行了尝试。
1、制作framework:制作framework过程中为便于调试,我们采用workspace对project和framework联编的方式,见之前的博客:https://blog.csdn.net/denggun12345/article/details/86152128当然可能还有一些问题例如bundle的制作方法,xib的注意点等等都可以从之前的博客了解https://blog.csdn.net/denggun12345/article/details/86156040
2、创建组件化工程,编辑及测试podspec文件:
2.1》将模拟器和真机的framework合并好之后,添加到组件化过程中,添加路径如下:
2.2》编辑podspec
在podspec文件里添加framework的所有Headers文件夹下.h文件路径:
s.source_files = 'YHTestSevenEightPod/YHTestSevenEightFramework.framework/Headers/*.{h}';
framework路径:
s.vendored_frameworks = 'YHTestSevenEightPod/YHTestSevenEightFramework.framework';
framework头文件路径:
s.public_header_files = 'YHTestSevenEightPod/YHTestSevenEightFramework.framework/Headers/YHTestSevenEightFramework.h'
如下图:
注意:如果用的是.a库的话,就是s.vendored_libraries了;系统的.a是s.libraries;系统的framework是s.frameworks
3、将通过本地验证的 组件化framework进行本地验证
4、将组件化工程通过cocopods 安装到测试工程进行本地测试,参考博文:https://blog.csdn.net/denggun12345/article/details/85127977
5、将本地组件化framework提交到远程仓库并打tag
6、将通过远程验证的组件化framework,pod到本地使用
pod下来的framework也要按4的注意点做处理,才能正常运行
上边工程涉及到组件库进行远程托管的,就不在此赘述,具体可参考以前的博文:https://blog.csdn.net/denggun12345/article/details/84989492
此篇文章主要强调framework与非framework组件化的不同点:
一、组件化以framework创建组件化工程,编辑及测试podspec文件