热门标签 | 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

效果



推荐阅读
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Maven入门、什么是Maven、如何使用Maven、Maven的项目结构、简单的Mavenjava项目、Maven常用命令、Maven项目之间的引用、Maven依赖的传递、可选、排除day01
    目录第一节Maven入门1.1什么是Maven1.2如何使用Maven第一步:下载Maven第二步:配置Maven的环境变量第三步:了解什 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 20209测试通过:eclipse安装svn插件
    网址不能用了,新的办法参考:https:quantum6.blog.csdn.netarticledetails117250800下载了最新的ecli ... [详细]
  • SVN 功能说明(简版)
    Subversion(SVN)是什么?SVN是一种版本管理系统,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会 ... [详细]
  • IamsettingupApacheserverwithTortoiseSVNforalocalsourcecoderepository.Ihaveobservedt ... [详细]
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社区 版权所有