Pod管理静态库一些注意事项

Author Avatar
xiaoLit Created: Jun 15, 2019 Updated: Oct 25, 2019

集成创建等等都有很多了文章了,只记录一下需要注意的部分。

一、异常解决方案:

1. 集成时pod install错误use_modular_headers

[!] The following Swift pods cannot yet be integrated as static libraries:

The Swift pod `PodsStaticLib` depends upon `MBProgressHUD`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.

修改pod文件:

platform :ios, '8.0'
//1.8之后采用CDN源
source 'https://cdn.cocoapods.org/' 

//podSpec文件目录
source 'http://xxx.com/xxx.git'

//
use_modular_headers!

2. pod lib lintpod spec lint 命令的区别

pod lib lint是只从本地验证你的pod能否通过验证。
pod spec lint是从本地和远程验证你的pod能否通过验证。

注意:
如果使用pod spec lint去验证私有库能否通过验证时,应该要添加--sources选项,不然会出现找不到repo的错误。

pod spec lint --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'

3. subspec格式

为了让自己的Pod被导入时显示出良好的文件层划分,subspec是必须的。
subspec要依赖其它的subspec,则subspecdependency后面接的不是目录路径,而是specA/specB这种spec关系

4. 私有库引用私有库的问题

在私有库引用了私有库的情况下,在验证和推送私有库的情况下都要加上所有的资源地址,不然pod会默认从官方repo查询。

pod spec lint --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs' pod repo push 本地repo名 podspec名 --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'作者:雷侯塞利
链接:https://www.jianshu.com/p/1e5927eeb341
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5. 便捷地开发本地私有库

Cocoapods就提供了一个开发模式,其实操作起来也是非常简单的事情,就是将所谓的引用路径修改成本地路径即可。这样在通常的修改代码中是不需要执行pod update的,但是对于如果修改了目录结构(添加、删除或者移动文件文件)或者是修改了Podspec文件的配置的话,最好是运行一下pod update的命令。普通修改代码的情况下就不需要运行pod update命令和打tag了。

pod 'someLib', :path => '../'

6. 如果私有库添加了静态库或者dependency用了静态库

那么执行pod lib lint还有pod spec lint时候需要加上--user-libraries选项
否则会出现'The 'Pods' target has transitive dependencies错误。

7. 提交修改等没有更新

pod install, pod search 都是在本地资源下进行索引的,所以提交之后,需要用pod repo update一次本地库才行

8. push spec警告无法提交

pod repo push 本地私有库文件夹 xxx.podspec --allow-warnings --skip-import-validation

二、验证及推送常用的补充命令

–allow-warnings //Allows push even if there are lint warnings
–use-libraries //Linter uses static libraries to install the spec
–swift-version=VERSION T//he SWIFT_VERSION that should be used to lint the spec.
This takes precedence over a .swift-version file.
–skip-import-validation //Lint skips validating that the pod can be imported
–skip-tests //Lint skips building and running tests during validation
–silent //Show nothing
–verbose //Show more debugging information
–no-ansi // Show output without ANSI codes
–help // Show help banner of specified command作者:炎成

Reference

iOS组件化 (pod私有库,包含静态库)