美文网首页
创建自己的公有库和私有库

创建自己的公有库和私有库

作者: Sunney | 来源:发表于2019-07-05 16:25 被阅读0次

首先本人会以github为例,创建自己的私有库。不懂请看下面,让我慢慢告诉你怎么创建自己的公有库!

一、 用本人账号在github创建一个公有仓库

注意: 如果要创建私有库选择Private

image

MIT License 是稍后podspec里面要用到的协议

二、 Cocoapods注册Trunk

image

$pod trunk register [Your-Email] '[Your-Name]' --description='[Your-Desc]'

  1. Your-Email: 任意邮件,但是我比较推荐你使用github上的Email

  2. Your-Name 推荐使用github上使用的Name

  3. Your-Desc: 一个简单的描述,往往这个时候我们使用的是自己电脑的一个描述

比如我自己注册了一个$ pod trunk register 1136200379@qq.com 'PCZheng' --description='iMac (Retina 4K, 21.5-inch, 2017)'
注册完成后,你可以通过[pod trunk me]查看信息

$ pod trunk me 查看信息是会有[!] Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.这是要在你注册的[Your-Email]查看给你发的email点击里面的链接认证。由于我没有认证所以,pod trunk me 并能查看信息,需要叫我认证,由于最先没反应过来,我又注册了trunk一次,注册错了可以删除,删除具体的方法执行pod trunk --help,查看删除方法。

三、将你第一步创建的库,clone到指定的文件夹里面

image image

四、创建.podspec文件 并且编辑.podspec

该步骤是重点也是难点,该步骤要是出什么错误了,后面都是扯淡,本人就因为各种各样的问题在这个步骤卡了很久,最后通过各种解决方案解决了,有些坑只有自己趟过了才知道难不难,所以废话也不多说,遇到各种不会的就goole和百度吧,或者@我也行。

**.podspec 即pod描述文件podspec specification **

为了讲明白这一步,这一步主要分为下面这几个步骤:

1.如何创建podspec文件

2.如何编写podspec文件

3.如何实现目录分层

4.如何校验podspec文件

5.在校验podspec文件所遇到过的问题

1.如何创建podspec文件

$pod spec create 库名

例如我自己的PageController

image image

该目录下就会多一个PageController.podspec文件,可以有文本编辑打开对这个文件进行编辑

image
   **Pod::Spec.new do |s|** 
 
   s.name        = "PageController" #框架名
 
   **s.version**      = "0.0.1" #当前版本号,在pod search PageController的时候会显示该信息

  s.summary      = "A short description of PageController."#详细描述,在pod search PageController的时候会显示介绍
 
 s.description  = <<-DESC
 
                  DESC
 
   **s.homepage**    = "http://EXAMPLE/PageController"#页面链接

   # s.screenshots  = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
 
   s.license      = "MIT (example)"#开源协议,也就是第一步选择的协议
 
   # s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
 
   s.author            = { "RainbowWait" => "1136200379@qq.com" }#作者
 
   # Or just: s.author    = "RainbowWait"
 
   # s.authors            = { "RainbowWait" => "1136200379@qq.com" }
 
   # s.social_media_url  = "http://twitter.com/RainbowWait"
 
   #s.platform    = :ios
 
   s.platform    = :ios, "8.0"#支持iOS平台最低版本
 
   #  When using multiple platforms

   # s.ios.deployment_target = "5.0"
 
   # s.osx.deployment_target = "10.7"
 
   # s.watchos.deployment_target = "2.0"

   # s.tvos.deployment_target = "9.0"
 
   **s.source**      = { :git => "http://EXAMPLE/PageController.git", :tag => "#{s.version}" }#源码git地址 以及tag标签
 
   **s.source_files**  = "Classes", "Classes/**/*.{h,m}"#源文件(可以包含.h和.m)
 
   s.exclude_files = "Classes/Exclude"
 
   # **s.public_header_files** = "Classes/**/*.h"#头文件(.h文件)

   # s.resource  = "icon.png"
 
   # **s.resources** = "Resources/*.png"#资源文件(配置的文件都会放到mainBundle中)
 
   # s.preserve_paths = "FilesToSave", "MoreFilesToSave"
 
   # s.framework  = "SomeFramework"

   # **s.frameworks** = "SomeFramework", "AnotherFramework"#依赖的系统的框架

   # s.library  = "iconv"
 
   # **s.libraries** = "iconv", "xml2"#依赖的系统库
 
   s.requires_arc = true#支持ARC
 
   # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
 
   # s.dependency "JSONKit", "~> 1.4"#依赖的第三方库

https://guides.cocoapods.org/syntax/podspec.html 请参照Podfile详细

上面列举的信息大部分来自pod默认生成的podspec文件中的给的,其中需要重点注意标识黑体的这几个信息

下面我会举例说明giant如何写podspec中的每项配置。

image image

s.source 源代码地址 以及tag 标签

 s.source       = { :git => "https://github.com/RainbowWait/PageController.git", :tag => "0.0.1" }**

git tag 0.0.1 设置的tag标签为0.0.1 git tag -d 0.0.1删除0.0.1的tag标签 最后提交的时候git push --tags

**s.source_files **配置三方库的源文件(.h或.m文件),swift是配置.swift文件

写法:

OC:s.source_files = "Classes/*/.{h,m}"#Classes路径下的所有匹配文件

   s.source_files = "Classes/*.{h,m}"#Classes文件夹下的所有匹配文件

   s.source_files = “Classes/PageController.{h,m}"#直接指定文件名

Swift:s.source_files = "Classes/*/.{swift}"#Classes路径下的所有匹配文件

       s.source_files = "Classes/*.{swift}"#Classes文件夹下的所有匹配文件

       s.source_files = “Classes/PageController.{swift}"#直接指定文件名

public_header_files头文件

s.public_header_files = "Classes/*/.h"#Classes路径下所匹配的.h文件

s.public_header_files = "Classes/*.h"

s.public_header_files = "Classes/Public.h"

vendored_frameworks 引用非系统的框架

s.ios.vendored_frameworks = "Frameworks/MyFramework.framework"

s.vendored_frameworks = 'MyFramework.framework’,'TheirFramework.framework'

frameworks配置系统框架

s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'

vendored_libraries 非系统静态库(要注意,这里的.a静态库名字必须要带lib前缀,如果引用的静态库名字没lib前缀会导致编译报错,只需要重命名加上即可)

s.ios.vendored_library = 'Libraries/libProj4.a'

s.vendored_libraries = 'libProj4.a', 'libJavaScriptCore.a'

libraries:配置依赖的系统库(要注意,这里的写法需要忽略lib前缀)

libraries = 'c++’,'sqlite3', 'stdc++.6.0.9', 'z'

resources:配置资源文件(.bundle,.png,.txt等资源文件,这些资源文件会被放到mainBundle中,要注意避免发生命名重复的问题)

s.resources = ['Images/.png’,'Sounds/']

s.resource = 'Resources/HockeySDK.bundle'

resource_bundles:配置指定bundle的资源文件(可以解决resources导致的命名冲突问题)

spec.ios.resource_bundle = { 'MapBox' => 'MapView/Map/Resources/*.png' }

spec.resource_bundles = {

'MapBox' => ['MapView/Map/Resources/*.png'],

'OtherResources' => ['MapView/Map/OtherResources/*.png']

}

swift_version 支持Swift的版本

s.swift_version = '4.0'

dependency:依赖的三方库,pod库或者可以是自身的subspec

3.如何实现目录分层3.如何实现目录分层

使用subspec来实现目录分层。

目录分层的好处:

目录分层,结构清晰;

使用pod引入一个三方库时,可以只引入一个subspec而不用将整个三方库引入。

例如AFNetworking:

image

嵌套请参考 CocoaPods Guides - Podspec Syntax Reference v1.6.0.beta.2

4.如何校验podspec文件

pod lib lint (首先从本地验证你的pod能否通过验证)

pod spec lint (从本地和远程验证你的pod能否通过验证)

pod lib lint --verbose (加--verbose可以显示详细的检测过程,出错时会显示详细的错误信息)

pod lib lint --allow-warnings (允许警告,用来解决由于代码中存在警告导致不能通过校验的问题)

pod lib lint --help (查看所有可选参数,可选参数可以加多个)

首先把你的代码先提交到远程仓库,并且把设置的标签页推送到远程仓库,以下是截图

image image image image

修改后的PageController.podspec文件

image

从本地和远程验证pod能否验证通过

pod spec lint --allow-warnings

image

第五步、搭建私有库环境

1.创建自己的私有库

pod repo add [repo名] [repo Git地址]

例如:pod repo add PageControllerRepo https://github.com/RainbowWait/PageController.git

查看私有库是否创建成功

pod repo list 下面的lists错误了是list

image

需要注意的是:

1. 要记得将代码提交到远端

2. 要记得打tag,每个tag对应一个三方库版本

3. podspec文件中version的值要与git中的一个tag对应

2.向私有的repo库中提交podspec

pod repo push [repo名] [.podspec文件名] 在验证的时候有警告就要加上--allow-warnings,否则会失败

image

3.提交公有library

pod trunk push [NAME].podspec

pod repo update// 查找一下你提交的pod

pod search PageController

文章参考了 Cocoapods整理(四)——搭建Cocoapods私有库环境 - Zcp大官人的iOS开发专栏 - SegmentFault 思否

Cocoapods整理(三)——编写podspec文件 - Zcp大官人的iOS开发专栏 - SegmentFault 思否

image

相关文章

  • CocoaPods 公有库, 私有库的创建

    CocoaPods 公有库, 私有库的创建 * 公有库 创建远程公有库,我们是用trunk的方式 1.1: 注册C...

  • Cocoapad私有库踩坑

    1.私有库与公有库区别 1、私有库比公有库多了一个.podspec管理库。2、因此在创建私有仓库,要创建两个仓库。...

  • 创建自己的公有库和私有库

    首先本人会以github为例,创建自己的私有库。不懂请看下面,让我慢慢告诉你怎么创建自己的公有库! 一、 用本人账...

  • iOS 创建自己的私有库

    概述 如果看本文有些吃力,可以先练习我发布的创建开源库 本文是私有库的创建,非公有库创建 私有库创建使用gitla...

  • 公有库和私有库

    CocoaPods创建公有库和私有库的步骤总结https://blog.hudongdong.com/ios/92...

  • Pod私有库的搭建

     我在上一篇文章中说完公有库的创建,那么公有库的创建是为了开源自己写的一些工具库或者框架,而私有库的创建就是为了在...

  • 如何自己写一个iOS第三方库

    CocoaPods 私有仓库的创建(超详细) CocoaPods公有仓库的创建 如果私有库search不到,可以

  • CocoaPods创建公有和私有库

    一、使用CocoaPods创建公有库(也就是能search到,并且能pod install) 1.在github上...

  • iOS创建私有库

    iOS创建私有库 创建本地私有库索引和远程私有库索引关联 pod repo addSGSpecshttp://12...

  • iOS开发私有库的创建

    近期由于自己在玩玩私有库和公有库,记录下来自己搭建的过程。私有库可以本地和远程,这里主要是将远程库的搭建。 当然在...

网友评论

      本文标题:创建自己的公有库和私有库

      本文链接:https://www.haomeiwen.com/subject/tvuehctx.html