iOS 组件化流程

一. 创建repo 管理私有库。

1.先在gitlab或者github 上创建一个git库 这个库什么都不用写 只是单纯的创建一个项目 用来专门管理私有pod库 如http://git.gitAddress.com/app/ios_pod_specs.git

2.本地创建pod repo 用来日后在本地pod install时可以再repo中找到私有库。 如 repo名为gymbo-pod-specs 并指定repo 的git库为刚刚创建好的git库。

pod repo add gymbo-pod-specs http://git.gitAddress.com/app/ios_pod_specs.git

// 查看本地repo

pod repo list

// 删除本地repo xxx为repo名

pod repo remove xxx

二. 创建私有库。

  1. 使用pod自动命令行创建pod 项目 xxx为库名 如: GYMNetwork

    pod lib create xxx
    
  2. 在Classes目录下添加组件代码如下:

image.png
  1. podspec中应该注意:

// 指定iOS版本

s.ios.deployment_target = '10.0'

// 源代码

s.source_files = 'GYMNetwork/Classes/**/*.{h,m,swift}'

// Swift language version

s.swift_versions = '5.0'

// 若需要依赖其他三方库

s.dependency 'SwiftyJSON', '~> 5.0.0'

s.dependency 'GYMExtensions', '1.0.5'

*需注意 GYMExtensions为私有库,想要在GYMNetwork的 Example中运行 需要在Example的Podfile中指定source

source 'https://github.com/CocoaPods/Specs.git'

source 'http://git.gitAddress.com/app/ios_pod_specs.git' // 存放 GYMExtension的repo地址

三:私有库的提交

1.创建git库的流程省略,把私有库的代码使用git管理。

2.修改完私有库的代码后 需同步修改.podspec中的版本号s.version 并git commit 代码

3.添加git tag tag为修改的版本号

git tag 1.0.3

git push origin 1.0.3 或者 git push --tags ??

4.校验并且推送上去

pod lib lint --allow-warnings

// 把当前的库的podsspec推送到 gymbo-pod-specs 这个大的仓库中

pod repo push gymbo-pod-specs GYMConfig.podspec --allow-warnings

最后显示如下即为成功

[Add] GYMConfig (0.1.0)

其他需要注意:

在工程引用私有pod库的两种形式:

1.使用source

组件化 私有库

source 'http://git.gitAddress.com/app/ios_pod_specs.git'

pod 'GYMExtensions', '1.0.5'

2.或者使用指定源和tag的形式

pod 'GYMExtensions', :git => 'http://git.gitAddress.com/liaoworking/gymbo-ios-modulization.git', :tag => '1.0.4'

遇到的问题:

  1. fatal: Remote branch 0.1.3 not found in upstream origin
    这个问题折腾了我下午 看问题我还以为是没有创建branch 可是就算我创建完也不行。 最后发现是ssh的问题 你需要把podspec文件中的source改成ssh形式的

     s.source           = { :git => 'git@gitee.com:xxxx/ios-foundation-i18n.git', :tag => s.version.to_s }
    

并且把你本地的 pod repo 重新以ssh形式再拉一次

最后把podfile 里的source 也改成ssh的

source 'git@gitee.com:xxxx/ios-pod-spec-temp.git'
  1. 依赖其他私有三方库时报错

Encountered an unknown error (Unable to find a specification for `xx` dep

sources=后面接'你的私有spec地址,公有pod库地址'

 pod spec lint --verbose --use-libraries --allow-warnings --sources=git@gitee.com:xxxx/ios-pod-spec-temp.git,https://github.com/CocoaPods/Specs.git

参考:

https://blog.csdn.net/m0_47450499/article/details/123376447
https://www.jianshu.com/p/cb9cc138137f

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. 创建repo 管理私有库。 1.先在gitlab或者github 上创建一个git库 这个库什么都不用写 只...
    liaoworkinn阅读 3,290评论 0 0
  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    wwm123阅读 4,432评论 0 0
  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    拂晓的云阅读 12,022评论 6 23
  • iOS的组件化,一直都是一个理念,很多大公司一直在强调却没有具体可行的或简单可行的方案。所以分享下大概思路。 框架...
    蝴蝶之梦天使阅读 10,744评论 14 34
  • 一、 前言 随着我们游戏社区产品的功能越来越丰富,多个项目的并行开发,以及一些功能模块重复开发,严重的增加了项目的...
    hylccmh阅读 5,855评论 0 3

友情链接更多精彩内容