一、设置gitignore文件
上传文件的时候,我们git导入的第三方库完全可以忽略上传。当然还有一些其他你用不到上传的文件,都可以通过设置gitignore来避免这些文件的上传。
# macOS
.DS_Store
# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
# Bundler
.bundle
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
# Note: if you ignore the Pods directory, make sure to uncomment
# `pod install` in .travis.yml
#
Example/Pods/
Pods/
Example:就是你的项目名。
二、组件更新
业务组件更新的时候,需要先更新依赖的基础组件,否则在校验的时候会报错,找不到相关的文件或者方法。所以,流程如下:
1、我们需要先给修改的基础组件打个正式的tag,然后校验&push组件的xxx.podspec文件。
2、更新本地repo源,pod repo update xxx
。
3、校验我们的业务组件,通过后上传podspec文件。
具体的更新流程见:iOS组件化的创建、tag、提交到远端
三、modulemap
1、Module
Module(模块)-最小的代码单元。
一个Module是机器代码和数据的最小单位,可以独立于其他代码单位进行链接。通常,Module是通过编译单个源文件生成的目标文件。例如:前的test.m被编译成目标文件test.o时,当前的目标文件就代表了一个Module。
2、modulemap的作用
modulemap定义:用来描述头文件与module之间映射的关系的文件。
- 提高编译时可扩展性,只编译或 include 一次。避免头文件多次引用,只解析一次头文件甚至不需要解析(类似预编译头文件)
- 减少碎片化,每个 module 只处理一次,环境的变化不会导致不一致
- 对工具友好,工具(语言编译器)可以获取更多关于 module 的信息,比如链接库,比如语言是 C++ 还是 C等等
umbrella作用
它是框架的“主”头文件
四、组件化架构
分为三个层级:
1、基础服务组件
三方库和项目基础类
2、中间服务件
打点、地图、共用类
3、业务组件
项目的各项业务拆分成组件。且相互之间没有关联,通过中间服务件相互调用,包含传参,代理、block的处理。