使用CocoaPods创建自己的私有库-iOS组件化第一步 (2)

Could not find a `ios` simulator (valid values: ). Ensure that Xcode -> Window -> Devices has at least one `ios` simulator listed or otherwise add one.
这个问题是pod依赖的组件fourflusher与xcode版本不匹配造成的,可以使用如下命令更新

1.sudo gem uninstall fourflusher 2.sudo gem install fourflusher

必要的话还需要更新pod

sudo gem update cocoapods

[!] TestLib did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).
pod验证发现3个及以上的warning就会报这个错,如果只是验证一下工程,能确保对外发布之前能修复,可以使用--allow-warnings

pod lib lint --allow-warnings

如果验证通过,会看到TestLib passed validation.,到这一步既完成验证

版本:iOS和Swift管理

通过pod官方模板做出来的工程iOS版本为8.0,Swift版本为4.0,我们有时需要根据需要修改版本号,需要在spec文件中添加:

# iOS版本 s.ios.deployment_target = '9.0' # Swift版本 s.swift_versions = '5.0'

然后执行pod install更新工程即可

Git上传到私有库

现在私有Git服务器创建TestLib项目,然后回到工程目录,使用Git初始化命令:

git init git remote add origin 私有仓库地址/TestLib.git git add . git commit -m 'init' git push -u origin master

然后修改spec文件内容

# 主页、截图、license证书、作者信息、源代码地址、社交地址 s.homepage = 'http://私有库地址/TestLib.git' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'xxx' => 'xxx@xxx.com' } s.source = { :git => 'http://私有库地址/TestLib.git', :tag => s.version.to_s }

如果需要对外发布版本时需打tag,然后创建同名branch

git tag -a 0.1.0 -m '0.1.0' git branch 0.1.0 打包:pod package

有时我们不希望提供源代码,只提供framework给外部调用,可以使用package,首先安装pod插件:

sudo gem install cocoapods-packager

package参数:

参数名 注释
--force   覆盖之前的文件  
--no-mangle   1.表示不使用name mangling技术,pod package默认是使用这个技术的。我们能在用pod package生成二进制库的时候会看到终端有输出Mangling symbols和Building mangled framework。表示使用了这个技术。2.如果你的pod库没有其他依赖的话,那么不使用这个命令也不会报错。但是如果有其他依赖,不使用--no-mangle这个命令的话,那么你在工程里使用生成的二进制库的时候就会报错:Undefined symbols for architecture x86_64。  
--embedded   生成静态framework  
--library   生成静态.a  
--dynamic   生成动态framework  
--bundle-identifier   动态framework需要的签名  
--exclude-deps   不包含依赖的符号表,生成动态库的时候不能包含这个命令,动态库一定需要包含依赖的符号表  
--configuration   表示生成的库是debug还是release,默认是release。--configuration=Debug  
--subspecs   如果你的pod库有subspec,那么加上这个命名表示只给某个或几个subspec生成二进制库,--subspecs=subspec1,subspec2。生成的库的名字就是你podspec的名字,如果你想生成的库的名字跟subspec的名字一样,那么就需要修改podspec的名字。 这个脚本就是批量生成subspec的二进制库,每一个subspec的库名就是podspecName+subspecName。  
--spec-sources=private,https://github.com/CocoaPods/Specs.git   一些依赖的source,如果你有依赖是来自于私有库的,那就需要加上那个私有库的source,默认是cocoapods的Specs仓库。--spec-sources=private,https://github.com/CocoaPods/Specs.git。  

可以使用下面的命令打包:

pod package TestLib.podspec --force

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygjwy.html