美文网首页iOS Developer
关于发布github开源框架

关于发布github开源框架

作者: 村长大人tardis_cxx | 来源:发表于2017-05-11 14:30 被阅读32次

    iOS github 框架


    当用CocoaPods管理iOS工程内部第三方开源框架时,不仅为开发带来了很大方便,而且也让组件化开发成为了一种不错的开发方式,即把所有组件以框架的方式交由CocoaPods管理,再统一集成进项目,不仅提高了开发效率,而且项目架构也十分清晰明了。
    这里先说说使用CocoaPods发布开源框架的步骤,和一些出现的问题。

    准备

    首先,让自己的电脑具备在github上具备开发框架的能力,终端输入以下命令:

    // 这里输入的邮箱是你注册**github**的邮箱,当然如果没有注册github就先注册一个
    // 后面是开发者昵称,最好也跟注册**github**的名字是一样的,否则后面上传的时候找不到
    pod trunk register 你的邮箱 "你的名字"
    

    注册完成往后,会收到邮件,复制链接,打开后,会出现一个注册成功的图片,如果不成功,则重新检查注册即可。然后,终端输入以下命令:

    pod trunk me
    

    这一步终端就会打印你注册的信息。

    创建远程代码仓库

    然后,打开github,点击+,点击New repository,如下图,其中标记内容为必填:

    创建仓库.png

    如此,远程代码仓库创建完成,copy链接:

    copy地址.png

    并打开终端,在存放框架的目录下,输入以下命令:

    git clone 链接
    

    创建工程

    然后打开Xcode创建新工程,在工程文件夹目录下创建与框架同名的的文件夹,用来存放框架源文件,与工程文件同级,并创建测试代码文件,OC就创建xx.h和xx.m,Swift就创建xx.swift即可。
    返回上级目录,即工程目录同级,先提交代码仓库,命令如下:

    git add .
    git status
    git commit -m "创建测试工程"
    git push origin master
    git tag "0.0.1"
    git push --tags
    

    生成spec文件,输入以下命令:

    pod spec create https://工程地址(或者是框架名称)
    

    配置spec文件

    配置spec.png

    用Xcode打开spec文件,配置spec文件比较容易出错,配置文件如下:

    Pod::Spec.new do |s|
    # 如果是开源框架的话,以下保留属性就足够了
      s.name         = "TCPageView"
      s.version      = "0.0.2"
      s.summary      = "一个功能不错的选项视图"
      s.homepage     = "https://github.com/TardisCXX/TCPageView"
      s.license      = "MIT"
      s.author             = { "TardisCXX" => "email@address.com" }
      s.platform     = :ios, "8.0"
    # 这里的tag是远程仓库工程标签,可以直接修改,但应该和提交的标签一致,也可以不要"",直接写s.version
      s.source       = { :git => "https://github.com/TardisCXX/TCPageView.git", :tag => "#{s.version}" }
    # 源文件路径,在本地话,就是源文件文件层次,下面是Swift框架,如果是OC就应该是s.source_files  = "TCPageView", "TCPageViewProject/TCPageView/*.{h,m}"
      s.source_files  = "TCPageView", "TCPageViewProject/TCPageView/*.swift"
      s.requires_arc = true
    # 如果是Swift这一句要加上,如果是OC这一句就不需要了,当然如果还有使用的库,就用s.frameworks = "", "",...
      s.framework  = "UIKit"
    # 如果有依赖库的话,还得加上s.dependency "JSONKit"
    end
    

    command + s保存,然后验证spec文件,命令如下:

    pod spec lint 或者 pod lib lint
    

    如果验证成功,则执行下面命令:

    pod trunk push
    

    可能出现的问题1

    如果提交成功,,然后执行命令:

    pod search 框架名
    

    如果搜索到,那么恭喜你,你可以开发框架了,如果没搜索到,那么如下:

    pod setup
    

    如果还不能search到,那么找到以下路径:

    ~/Library/Caches/CocoaPods 
    

    然后删除目录下的search_index.json文件,然后继续输入命令:

    pod search 框架名
    

    可能出现的问题2

    在生成spec文件的时候,会出现以下一个问题:

    [!] Unable to fetch data for `TardisCXX/TCNewFeatureView`
    

    重新删除创建的工程,然后推送到远程仓库,再生成spec文件

    可能出现的问题3

    1. 验证spec文件的时候,出现一个问题:

    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    

    解决办法,那么就输入:

    pod spec lint --verbose
    

    2. 验证spec文件的时候,出现一个问题2:

    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
    

    解决办法,那么就输入:

    pod spec lint --no-clean
    

    如果还是解决不了,不防输入:

    echo "3.0" > .swift-version
    

    3. 验证spec文件的时候,出现一个问题3:

    - ERROR | license: Sample license type.
    

    解决办法,删除license属性的(example)

    4. 验证spec文件的时候,出现一个问题4:

    - WARN  | source: Git sources should specify a tag.
    

    解决办法,有一个没有打标签的错误,这个只是一个警告,如果没有打标签,就先打个标签

    5. 验证spec文件的时候,出现一个问题5:

    [!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: 
        `echo "2.3" > .swift-version`:
    

    解决办法,直接运行:

    echo "2.3" > .swift-version
    

    6. 验证spec文件的时候,出现一个问题6:

    - ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
    

    解决办法,重新检查下s.source_files源文件目录层次,修改后再次运行,如果还是报错,那么 open 或者 手动打开 以下路径:

    /Users/电脑名/Library/Caches/CocoaPods/Pods/External/5f222008c0986b8da6c0672944111053-3cfc4
    

    一直到最后文件夹中,就会看到没有源文件,那么我们手动创建,即把已经创建好的源文件按照spec文件配置层次,拖进去即可,当然不需要工程文件!!!然后再次验证:

    pod spec lint
    

    就会成功,如果还不成功,重新打标签,或者删除工程文件、删除spec文件,重新来过!!!
    当验证成功后,需要把spec推送到github,执行以下命令:

    pod trunk push
    

    当然还有一些问题,就是你的ruby版本太低,请更新即可。

    最后

    以上只是我遇到的一些问题,有所疏漏在所难免,希望大家帮我查缺补漏,谢谢。

    相关文章

      网友评论

        本文标题: 关于发布github开源框架

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