创建私有化Pod有两种方式,根据自己的情况来选择适合自己的方式来创建
1.在新建的项目中创建私有化Pod库:
进入项目想要存放的目录,使用以下命令:
$ pod lib create "MyTestPod"
- 执行命令后终端会问你四个问题,1.选择需要的平台;2.选择用到项目语言;3.是否需要创建一个示例工程;4.选择一个测试框架;5.是否基于View测试;6.类的前缀;问题参看官方文档,问完这4个问题他会自动执行pod install命令创建项目并生成依赖,完成后自动打开窗口。
xingkunkun:FlutterForFW admin$ pod lib create "MyTestPod"
Cloning `https://github.com/CocoaPods/pod-template.git` into `MyTestPod`.
Configuring MyFlutterPod template.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
1. What platform do you want to use?? [ iOS / macOS ]
> ios
2. What language do you want to use?? [ Swift / ObjC ]
> objc
3. Would you like to include a demo application with your library? [ Yes / No ]
> no
4.Which testing frameworks will you use? [ Specta / Kiwi / None ]
> none
5. Would you like to do view based testing? [ Yes / No ]
> no
6.What is your class prefix?
> ZF
Running pod install on your new library.
2.托管代码到Git服务器:因为podspec
文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag 根据自己项目的需要修改好然后,提交代码到远端仓库。
$ git add .
$ git commit -s -m "Initial Commit of Library"
$ git remote add origin http://xxx.....git
$ git push origin master $ git tag -m "first release" "0.1.0"
$ git push --tags #推送tag到远端仓库
$ git tag -m "first release" "0.1.0"
$ git push --tags #推送tag到远端仓库
3.编辑MyTestPod.podspec
文件,它是一个Ruby的文件,把编辑器的格式改成Ruby就能看到语法高亮,并在后面以注释的形式说明每个字段的含义,没有涉及到的字段可以去官方文档查阅,下面贴上修改的podspec文件模板级注释:
Pod::Spec.new do |s|
s.name = "MyTestPod" #名称
s.version = "0.1.0" #版本号
s.summary = "Just Testing." #简短介绍,下面是详细介绍
s.description = <<-DESC
Testing Private Podspec.
* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = "https://github.com/xxx/xxxxx/p/podTestLibrary" #主页,这里要填写可以访问到的地址,不然验证不通过
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" #截图
s.license = 'MIT' #开源协议
s.author = { "wtlucky" => "wtlucky@foxmail.com" } #作者信息
s.source = { :git => "https://github.com/xxx/MyTestPod.git", :tag => "0.1.0" } #项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
# s.social_media_url = 'https://twitter.com/' #多媒体介绍地址
s.platform = :ios, '7.0' #支持的平台及版本
s.requires_arc = true #是否使用ARC,如果指定具体文件,则具体的问题使用ARC
s.source_files = 'Pod/Classes/**/*' #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
s.resource_bundles = {
'PodTestLibrary' => ['Pod/Assets/*.png']
} #资源文件地址
s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址
s.frameworks = 'UIKit' #所需的framework,多个用逗号隔开
s.dependency 'AFNetworking', '~> 2.3' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end
4.编辑完podspec
文件后,需要验证一下这个文件是否可用,如果有任何WARNING
或者ERROR
都是不可以的,它就不能被添加到Spec Repo
中,不过Xcode
的WARNING
是可以存在的,验证需要执行一下命令。
$ pod lib lint
值得注意的是:
1.如果允许警告,在pod lib lint
命令后面跟上--allow-warnings
,否则也无法链接通过;
2.如果需要打印出具体的编译信息可跟上--verbose
,可清楚的看到一些提示信息;
3.如果项目中用到了一些三方库则需要跟上--use-libraries
命令才能通过;
如果链接通过后会看到有编译通过的提示字样;
-> MyTestPod (0.1.0)
PodTestLibrary passed validation.
5.验证无误就可以进入下一步了,本地测试podspec
文件,可以创建一个新的项目,在这个项目的Podfile
文件中直接指定刚才创建编辑好的podspec
文件,看是否可用。在Podfile
中可以这样编辑,有两种方式
source 'https://github.com/CocoaPods/Specs.git'
#source 'https://cdn.cocoapods.org/'
platform :ios, '9.0'
#1.指定路径
pod 'MyTestPod', :path => '~/code/Cocoapods/podTest/MyTestPod'
#2.指定podspec文件
pod 'MyTestPod', :podspec => '~/code/Cocoapods/podTest/MyTestPod/PodTestLibrary.podspec'
然后执行pod install命令安装依赖,打开项目工程,可以看到库文件都被加载到Pods子项目中了,不过它们并没有在Pods目录下,而是跟测试项目一样存在于Development Pods/PodTestLibrary中,这是因为我们是在本地测试,而没有把podspec文件添加到Spec Repo中的缘故。
6.在项目中编写代码,测试库文件无误后就可以开始下一步了,提交podspec到Spec Repo中。
# pod repo add "[Private Repo 别名]" "[GitHub HTTPS 仓库地址]"
$ pod repo add "podspecName" "https://github.com/xxx/MyTestPod.git"
#前面是本地Repo名字 后面是podspec名字
$ pod repo push "podspecName" "MyTestPod.podspec"
如果不执行
pod repo add xxx
这一步, 可直接执行:
$ pod repo push "https://github.com/xxx/MyTestPod.git" "MyTestPod.podspec"
如果添加别名错了,可以进行以下命令删除:
$ pod repo remove "podspecName"
7.至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了。
$ pod search MyTestPod
-> MyTestPod (0.1.0)
Just Testing.
pod 'MyTestPod', '~> 0.1.0'
- Homepage: https://github.com/xx/xxx/p/MyTestPod
- Source: https://github.com/xx/MyTestPod.git
- Versions: 0.1.0 [MyTestPod repo]
如果在项目中使用时安装无法找到,则可以先更新pod:
$ pod update
#然后再安装:
$ pod install
2.在现有项目中创建私有化Pod库:
如果是已经有了现成的项目,那么就需要给这个项目创建一个podspec文件,进入项目的跟目录,执行以下命令来创建podspec
文件:
$ pod spec create "podspecName" "gitUrl"
注意这一步只是在项目的目录中生成一个podspec
文件,生成成功后,后面的步骤全部按照上面 「新建的项目」
流程的第二部依次执行即可。