# Spec **Repository Path**: LewisYang/Spec ## Basic Information - **Project Name**: Spec - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-06-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2017年4月19日 Update 如果私有库中依赖了私有库和共有库,那么需要用下面的方法来验证和push ``` pod spec lint --sources='git@gitee.com:LewisYang/Spec.git,https://github.com/CocoaPods/Specs.git' pod repo push Spec--sources='git@gitee.com:LewisYang/Spec.git,https://github.com/CocoaPods/Specs.git' ``` 如果引用的第三方私有或公有库用到静态库,需要用 ``` --use-libraries ``` 使用 ``` pod spec lint --sources='git@gitee.com:LewisYang/Spec.git,https://github.com/CocoaPods/Specs.git' --use-libraries ``` # Spec私有库仓库使用步骤: 1、命令行输入以下,用以添加私有仓库到pod(只需添加一次) ``` pod repo add Spec git@gitee.com:LewisYang/Spec.git ``` 可以用以下命令来检查是否添加成功 ``` pod repo list ``` 这样就看到一个github的master远程仓库和我们上面刚创建的本地仓库Spec 2、创建MVVM这个私有组件库(例子) ``` pod lib create MVVM ``` 这句命令使用官方一个git项目作为模板帮助我们自动创建好工程模版,clone完成后会询问我们一些配置选项,包括用什么语言,是否需要测试框架,是否需要demo工程等,自己选择配置 如果对cocoapods比较熟悉,也可以自己创建工程,这个步骤最关键是创建类似MVVM.podspec的文件,同时针对自己的项目做修改。 3、上一步创建工程后一般系统自动用xcode打开该demo工程,把你的库源码和资源拉进去Development Pods,注意源文件放Classes目录,资源文件放Assets目录,如果你的库本身也依赖其他第三方库,可以在MVVM.podspec里面找到下面两行,自行修改 ``` s.vendored_libraries = 'Vender/WeChat/libWeChatSDK/*.{a}' s.frameworks = 'UIKit','Foundation' s.dependency 'ReactiveObjC', '~> 2.1.0' s.libraries = 'iconv','sqlite3','stdc++','z' ``` 第一行是第三方静态库文件 第二行是依赖的系统框架 第三行是依赖的第三方库(pod方式管理的开源库) 第四行是依赖的系统动态库 甚至可以设置配置文件: ``` s.user_target_xcconfig = {'OTHER_LDFLAGS' => ['-lObjC','-all_load']} ``` 4、验证MVVM.podspec文件是否有效,使用命令: ``` pod lib lint ``` 如果出错会打印提示信息,一般是podspec设置不对 通过后提交MVVM(例子)工程,还必需同时把通过校验的podspec提交到Spec工程(Spec工程下目录结构如下) ``` Spec/MVVM/0.1.0/MVVM.podspec ``` 注意,也可以通过命令行的方式提交,如: ``` pod repo push Spec MVVM.podspec ``` 上述命令将会先校验有效性然后push当前目录下的MVVM.podspec文件到Spec仓库 5、回到建设联结APP的Podfile文件,行首确认已经修改为: ``` source 'git@gitee.com:LewisYang/Spec.git' source 'https://github.com/CocoaPods/Specs.git' ``` 这里需要注意的是我们公开仓库和私有仓库共存的情况下必须要添加以上两个source 6、到这里可以pod search MVVM了,但搜索前最好执行以下命令先从远程私有仓库更新最新的文件 ``` pod repo update ``` 最后,就可以愉快的执行 ``` pod install ``` 或者 ``` pod update --no-repo-update ``` 7、有一种情况比较特殊,如果我们的私有仓库的库名字和公开仓库的库命名冲突,pod install的时候会检测到并提示,我们可以不用理会,当私有仓库和公开仓库冲突时,默认会使用我们自己的私有库,但以防万一,podspec文件修改name字段的时候记得取一个好名字,虽然不好看,但以下的方法也是行得通的,直接指定库地址或者标签、某个提交 ``` pod 'MVVM', :git => 'git@192.168.36.42:iOSComponent/MVVM.git', :tag => '0.1.0' ``` ``` pod 'MVVM', :git => 'git@192.168.36.42:iOSComponent/MVVM.git', :commit => 'b4dc0ffee'(这个commit不存在,这是举个例子) ``` ``` pod 'MVVM', :git => 'git@192.168.36.42:iOSComponent/MVVM.git' ```