热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidpod组件化_iOS组件化开发一私有库pod制作

前言:最近和朋友聊天聊到组件化开发,网上非常多优秀的文章有介绍也有很多的demo,组件化的几种实现方案的选择这里不做讨论,这里介绍一个组件

前言:

最近和朋友聊天聊到组件化开发,网上非常多优秀的文章有介绍也有很多的demo,组件化的几种实现方案的选择这里不做讨论,这里介绍一个组件化的基本技能:制作私有库===>给新手或有需要的人一点参考(不对或者错误的地方 欢迎大佬指出)

1.知识准备:

1.cocopod使用经验(iOS开发一般都有涉及)

2.git常用命令使用(svn用多了也得学学git,git命令不熟悉的建议下载SourceTree客户端)

3.github开源库相关经验(mac要配置好ssh的key等)

2.制作私有库10个步骤:

1.GitHub创建一个私有库(先pod search xxx 查一下你想取名字是不是被占用 关键!)

2.克隆到本地 然后Xcode创建一个项目 放到克隆的目录下(相关代码自己加进去)

3.创建一个 PodFile 和  ****.podspec 文件 主要的东西在这个podspec里面(可以自行百度 注意此时文件里面有个版本信息:1.0.0 与下面的要对应)【podspec教程】【podspec分支】

4.校验项目是否可以正常编译(只要关注error就可以了,根据错误提示修改,不难)

pod lib lint --allow-warnings

吭:依赖导入#import 不行 要换成 #import

5.提交代码到GitHub(我是用SourceTree来提交 不要把Test和依赖的第三方Pod文件提交上去)

6.打个tag两步指令: (可以上github看一下是否提交成功了)

git tag -m "code commit" "1.0.0"

git push --tags

7.上传私有库(这一步会校验github tag 1.0.0上面代码 要确保tag1.0.0这份代码上传完整)

pod spec lint --allow-warnings

吭:第4步本地的校验成功 但是github tag却校验不成功说文件不存在,要去github对应tag版本上检查一下tag的代码是否完成提交(下面有图)

8.发布私私有库

pod trunk push  ****.podspec --allow-warnings

9.清理本地缓存

rm ~/Library/Caches/CocoaPods/search_index.json

10.校验是否私有库发布成功

pod search ****

3.更新升级私有库(基本跟上面是一摸一样的 但是还是要写一遍 版本与Tag版本对应)

1.项目里面修改/添加代码(废话)

2.修改****.podspec里面的版本信息 与内容简介(之前1.0.0 现在改成1.0.1)

3.校验项目是否可以正常编译(只要关注error就可以了,根据错误提示修改,不难)

pod lib lint --allow-warnings

4.提交代码到GitHub(我是用SourceTree来提交 不要把Test和依赖的第三方Pod文件提交上去)

5.打个tag两步指令:

git tag -m "code commit" "1.0.1"

git push --tags

6.上传私有库:(这一步会校验github tag 1.0.1上面代码 要确保tag1.0.1这份代码上传完整)

pod spec lint --allow-warnings

7.发布私私有库

pod trunk push  ****.podspec --allow-warnings

8.清理本地缓存

rm ~/Library/Caches/CocoaPods/search_index.json

9.校验是否私有库发布成功(此时你会看到会有 1.0.0 与 1.0.1版本)

pod search ****

备注:以上的命令都是要在根目录下执行,终端先cd到项目根目录执行 eg:

cd  /Users/linpeng/Documents/Git/ModuleApp/XXXX

4.图文演示

demo地址:https://github.com/Jacky-LinPeng/LPCommonModule

1.GitHub创建一个私有库

2.克隆到本地 然后Xcode创建一个项目 放到克隆的目录下(相关代码自己加进去)

3.创建一个 PodFile 和  ****.podspec 文件 主要的东西在这个podspec里面(可以自行百度 注意此时文件里面有个版本信息:1.0.0 与下面的要对应)

注意箭头的版本信息与目录结构配置 关键!

4.校验项目是否可以正常编译(只要关注error就可以了,根据错误提示修改,不难)

pod lib lint --allow-warnings

5.提交代码到GitHub(我是用SourceTree来提交 不要把Test和依赖的第三方Pod文件提交上去)

6.打个tag两步指令: (可以上github看一下是否提交成功了)

git tag -m "code commit" "1.0.0"

git push --tags

7.上传私有库(这一步会校验github tag 1.0.0上面代码 要确保tag1.0.0这份代码上传完整)

pod spec lint --allow-warnings

8.发布私私有库

pod trunk push  ****.podspec --allow-warnings

9.清理本地缓存

rm ~/Library/Caches/CocoaPods/search_index.json

10.校验是否私有库发布成功

pod search ****

使用:

其他项目引用这个pod就可以使用这个pod里面的东西了,Test项目不需要引入AF,SD, Masonry等pod,因为LPCommonModule里面的podspec里面有引入这些依赖了

图文讲解也可以配合这两篇文章

https://blog.csdn.net/Tonyshng/article/details/69525556

https://www.jianshu.com/p/d7d1942dd3f1

========================更新 ==============

1.如何实现目录分层?

参考文章:https://segmentfault.com/a/1190000012269307

Pod::Spec.new do |s|

s.name = "LPCommonModule" #私有库的名称

s.version = "1.1.1" #版本号

s.summary = "App基础,第三方pod等依赖" #概述

s.description = <"MIT", :file => "LICENSE" } #许可证

s.author = { "linpeng" => "540933120@qq.com" } #作者名以及邮箱

s.platform = :ios, "8.0"

s.source = { :git => "https://github.com/Jacky-LinPeng/LPCommonModule.git", :tag => s.version.to_s } #这个是git上 releases的代码,以后每次版本升级,都会传到这里

s.source_files = "LPCommonModule/LPCommonModule/LPCommonModule.h" #路径 前面的表示私有库名,后面表示私有库中的内容

#s.public_header_files = &#39;LPCommonModule/LPCommonModule/LPCommonModule.h&#39;

s.subspec &#39;CommomView&#39; do |ss|

ss.ios.deployment_target = &#39;8.0&#39;

ss.source_files = &#39;LPCommonModule/LPCommonModule/View/**/*.{h,m}&#39;

end

s.subspec &#39;CommomManager&#39; do |ss|

ss.ios.deployment_target = &#39;8.0&#39;

ss.source_files = &#39;LPCommonModule/LPCommonModule/Manager/*.{h,m}&#39;

end

s.subspec &#39;CommomCategory&#39; do |ss|

ss.ios.deployment_target = &#39;8.0&#39;

ss.source_files = &#39;LPCommonModule/LPCommonModule/Category/*.{h,m}&#39;

end

s.exclude_files = "Classes/Exclude"

s.requires_arc = true

s.dependency &#39;ReactiveCocoa&#39;,&#39;2.5&#39;

s.dependency &#39;AFNetworking&#39;

s.dependency &#39;YYModel&#39;

s.dependency &#39;SDWebImage&#39;, &#39;~> 5.0.0-beta3&#39;

s.dependency &#39;Masonry&#39;, &#39;~> 1.1.0&#39;

s.dependency &#39;SVProgressHUD&#39;

end

效果



推荐阅读
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • MITM(中间人攻击)原理及防范初探(二)
    上一篇文章MITM(中间人攻击)原理及防范初探(一)给大家介绍了利用ettercap进行arp欺骗及劫持明文口令,后来我发现好友rootoorotor的文章介绍比我写的更透彻,所以基础利用大家可以参看 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 深入解析层次聚类算法
    本文详细介绍了层次聚类算法的基本原理,包括其通过构建层次结构来分类样本的特点,以及自底向上(凝聚)和自顶向下(分裂)两种主要的聚类策略。文章还探讨了不同距离度量方法对聚类效果的影响,并提供了具体的参数设置指导。 ... [详细]
  • 本文档详细介绍了软通动力Java开发工程师职位的笔试题目,涵盖了Java基础、集合框架、JDBC、JSP等内容,并提供了详细的答案解析。 ... [详细]
  • 本教程介绍如何在C#中通过递归方法将具有父子关系的列表转换为树形结构。我们将详细探讨如何处理字符串类型的键值,并提供一个实用的示例。 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
author-avatar
纸鸢漫天飞舞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有