1、创建私有的 pod 仓库,就像 GitHub 这样的仓库一样,大家都把代码托管到这个里面。
- 1、在自己公司的 git 服务器或者其他平台的 git 服务器上创建私有远程仓库,我是用公司的 git 服务器,名字叫 MySpecs ,克隆地址为:https://XXX/XXX/XXX/MySpecs.git
- 2、将私有的远程仓库copy到本地。
pod repo add MySpecs https://XXX/XXX/XXX/MySpecs.git
- 3、执行完毕后,在目录:/Users/xx/.cocoapods/repos 下会多出来一个MySpecs文件夹,至此私有的远程仓库部分就完成了。
-注意,这个私有的远程仓库生成之后,只做此一步就好。
2、创建私有的 pod 组件库,这里创建一个网络库为例
- 1、打开终端,执行命令来创建一个名为 MyNetworkManager 的Pod库空模板。
pod lib create MyNetworkManager
- 下面是选项的选择
- Pod库空模板就自动创建成功了。
- 2、在公司的 git 服务器上面创建 MyNetworkManager 的 git 远程仓库,克隆地址是:https://XXX/XXX/XXX/MyNetworkManager.git 。
- git 远程仓库这一步大家都很熟悉了,这里要注意的是不要创建 LICENSE 和 README.md 和 .gitignore 文件,不然下面关联远程仓库的时候有问题。
- 在终端 MyNetworkManager 目录下执行下面命令,关联本地仓库到远程仓库,推送已经创建的仓库
git remote add origin https://XXX/XXX/XXXMyNetworkManager.git git push -u origin master
- 更换 .gitignore 文件
git rm -r --cached . git add . git commit -m 'update .gitignore'
- 提交本次修改。
- 3、删除ReplaceMe文件,将原项目中需要封装文件复制到 MyNetworkManager/MyNetworkManager/Classes中,在拖入到项目里面
- 4、修改 MyNetworkManager.podspec 文件
Pod::Spec.new do |s| s.name = 'MyNetworkManager' s.version = '0.1.0' s.summary = '网络模块' s.homepage = 'https://XXX/XXX/XXX' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'szb' => 'zhongbo.shen@2339.com' } s.source = { :git => 'https://XXX/XXX/XXX/MyNetworkManager.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'MyNetworkManager/Classes/**/*' end
- 5、做正常的 git 提交命令了,这里的 tag 版本号要和上面的 s.version 版本号一致
// Example目录下 pod install // 回到项目根目录下 git add . git commit -am"此次内容" git push git tag 0.1.0 git push origin --tags
- 6、校验 MyNetworkManager.podspec 文件
pod spec lint --allow-warnings
- 检验完成发现没有错误,就说明没有问题。可以进行最后一步了。
3、上传 MyNetworkManager.podspec 文件到我们的私有远程仓库 MySpecs。
pod repo push MySpecs MyNetworkManager.podspec --allow-warnings
- 上面命令对 MyNetworkManager.podspec 文件做了两个操作:一个是将其推送到私有的远程仓库,可以去 公司的 git 上面 MySpecs 仓库中查看;另一个是将其 copy 到私有的本地仓库,这个可以去目录:/Users/xx/.cocoapods/repos/MySpecs 下查看到。
pod search MyNetworkManager
来查询它,接下来就是在原项目中使用它了。4、使用私有 pod 库
pod repo add MySpecs https://XXX/XXX/XXX/MySpecs.git
5、注意问题
pod cache clean MyNetworkManager --all
- 2、.podspec错误 – source_files`模式与任何文件不匹配
- 4、添加 frameworks 和
s.frameworks = "MobileCoreServices", "SystemConfiguration"
- libraries
libz.tbd 写成 z ,规则要去除 lib 和后边的.tbd,配置系统 library 这么简写
s.libraries = "c++", "sqlite3.0", "z"
-5、 缺少架构 normal i386/normal x86_64
-
The following build commands failed:
-
Ld /Users/ywk/Library/Developer/Xcode/DerivedData/App-bbsqamfhzhjciwehdhwasdrwlxod/Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/x86_64/Binary/App normal x86_64
-
Ld /Users/ywk/Library/Developer/Xcode/DerivedData/App-bbsqamfhzhjciwehdhwasdrwlxod/Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/i386/Binary/App normal i386
解决方法:
方法一:首先要检查source_files 路径有没有配置对,我的是目录分级时由于有一个路径配置跟其他的重复导致此错误。
方法二:然后尝试:
pod lib lint 后添加 --skip-import-validation
pod repo push 也添加--skip-import-validation
但可能不通过
方法三:podspec 文件添加x86_64 i386配置
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }