发布自己的iOS代码到cocopods spec
参考链接:
在遇到的最多问题就是
- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
解决方案:引用的路径是.podspec文件相对路径,如果确定无误还是报错,那么就要设置版本号与tag对应
$ set the new version to 1.0.0
$ set the new tag to 1.0.0 (1.0.0要与podspec的version对应)
这两条命令是为pod添加版本号并打上tag。然后执行podspec验证命令:
$ pod lib lint
1.0.0是.podspec文件内的 s.version = "1.0.0"
如果有过多的警告⚠️会导致无法上传成功,可以在命令后面追加 --allow-warnings忽略警告,通过验证
报错 ··· error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module]
解决办法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上 --use-libraries
pod lib lint --use-libraries
#当然,在提交的时候也要加上
pod repo push --use-libraries
创建自己的私有库:
当检测私有podspec文件和上传到私有库的时候如果有依赖其他的私有库需要加上--sources=
例如:pod spec lint --sources='github.com/CYZZ/YZSpec…' --use-libraries
这样可以防止pod去官方的源查找依赖库。
解决pod lib lint/repo push不支持i386编译&只能真机运行的库
如果是加入了SDK(.a或者.framework)可能SDK只支持真机架构,
可以在.podspec文件中添加:
s.pod_target_xcconfig = { 'VALID_ARCHS[sdk=iphonesimulator*]' => '' }
复制代码
参考地址:
pod repo push / pod lib lint i386 x86_64 验证不通过
如果一直验证失败可以跳过验证步骤www.jianshu.com/p/97d9a0ff2…
一 追加option --skip-import-validation
需要去修改配置文件,这个修改是永久的防止去检测模拟器架构的时候不通过的问题,直接强制发布到私有库。
这种修改只会对当前的pods版本生效,如果pods版本更新,配置文件会被重置,就需要再次修改。
pod库包含MRC的文件
有时候引用的第三方的一些MRC的iOS文件,需要进行特殊配置
方式1:在podspec中指定为不支持arc,requires_arc:false,同时指定特定的arc文件requires_arc
s.requires_arc = false
s.requires_arc = ['mylib/Classes/ARC/**/*.m']
方式2:设置全部文件支持arc,requires_arc:true,然后通过subspec来指定MRC文件,eg:
s.requires_arc = true
non_arc_files = 'mylib/udid/*.{h,m}'
s.exclude_files = non_arc_files
s.subspec 'no-arc' do |s1|
s1.source_files = non_arc_files
s1.requires_arc = false
end
第二种方式会生成一个文件夹目录,可以清晰的看到文件分层结构