iOS组件化现阶段成为开发者讨论的热点问题,个人觉得这是iOS技术日渐成熟的表现,就跟一个人一样,最初是想着如何吃饱,现在开始琢磨如何变着花样吃好。不太想蹭组件化的热度,暂且不要关心这些字眼的意义,实际上不管是组件化还是模块化我们所要解决的问题是一致的:效率。就跟现今社会一样从农业 —工业—信息实际上就是社会生产效率的提高。所以评判我们开发工作成效第一标准应该是否提高了效率,而不是又加了多少班,代码如何的高深莫测。 组件化/模块化实际上在计算机领域一直在使用,包括我们使用的电脑就是按照CPU、内存、显存、硬盘等等各种模块组织到一起。iOS开发中也是按照MVC,MVVM等等各种各样的把代码分拆组合。关于采用何种代码架构我觉得真心没有必要过于迷信他人,说什么好就赶紧跟随推崇,从来不冷静思考我上文所说的问题:是否真的提高了效率? 模块化我们首要做的就是代码的结构的组织调整,关于如何组织代码结构目前流行的就是按照功能和内容。任何团队也不会自诩说自己的代码组织结构是最好方案,因为我们每个团队不管是外部还是内部环境都是不一样的,就跟市面不存在一模一样的APP一样,只要提高了自己团队开发效率的就是最优的,所以我今天主要跟大家探讨是如何用CocoaPods来组织我们的模块化。
// 代码仓库clone 地址 git clonehttps://github.com/boyXiong/XWSwiftRefreshT.git
使用tag或者使用分支,通常使用tag,因为tag代表功能的完整性。如果使用分支,随后在分支上继续开发,然后再次update依赖时,可能会出现新开发的内容未验证就被更新了或者不兼容的情况
把项目源码上传到gitHub仓库再clone到本地(以ZJRefreshControl为例), 如果项目本来就在gitHub的仓库中, 直接clone到本地即可
CocoaPods 是专门为 iOS 工程提供第三方依赖库的管理工具,通过 CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置,就可以直观、集中和自动化地管理我们项目的第三方库。
在终端输入以下命令进行安装或者升级 旧版本cocoapods需升级最新的,之前在这遇到坑 $ sudo gem install cocoapods 安装详细方法 制作cocoaPods库详细 1、
该命令将在本目录产生一个名为PPodspec.podspec文件,用编辑器打开有很多的说明
随着项目功能的不断增加,越来越多的开发人员加入,业务主线也随之越来越多,造成耦合越来越严重,编译越来越慢,测试不独立等一系列问题。为了解决此类情况,我们可以考虑到使用组件化开发 概念 组件化就是将一个单一工程的项目, 分解成为各个独立的组件, 然后按照某种方式, 任意组织成一个拥有完整业务逻辑的工程。 优势 独立:独立编写、编译、运行、测试 重用:功能代码的重复使用。比如不同项目使用同一功能模块 高效:任意增删模块,实现高效迭代 组件化还可以配合二进制化, 提高项目编译速度 组件分类 大体
$ pod trunk register xxx@example.com 'Alex’ #注册,会发带验证链接的邮件到邮箱地址,名称无法修改。
我们考虑可能有不同的版本 因为可能需要自定义并且 可能其他模块的改动 我们新增1.0版本
五一之后,公司要求对代码进行整理,同时进行代码管理、自动化打包等标准化流程,这些东西一直是我想搞的,这次有了公司的支持,操作起来也更顺利了,代码管理、自动化打包会找时间写一篇博客,这次主要记录利用Cocoapods将多个项目中共用的代码抽离出私有库,方便其他项目的引用,也算是组件化的第一步吧。抽离出私有库的时候,参考了很多的博客,遇到了很多的问题,主要参考了这篇博客。 为什么要进行代码抽离 很多公司不止有一个产品,当项目达到两个及以上的时候,就需要考虑代码的共用(理想情况下)。由于我们公司特殊情况(懒
最终生成一个组件项目,会自动打开项目;在项目的目录下,其中有个Example的目录,打开就可以看到目录结构;
验证WSLNativeScanTool.podspec文件格式的有效性成功时,执行如下命令上传代码到CocoaPods:
创建私有库 创建两个仓库, 一个是私有库容器,一个是代码库 私有库:存放若干个代码库的信息 添加私有库容器 pod repo add 库名称 地址 查看添加的私有库容器 pod repo 创建代码库,并且clone代码到本地 在代码库创建一下文件 代码文件夹,单个仓库名.podspec 还有 .swift-version文件 修改.swift-version信息 echo "5.0" > .swift-version 创建podspec文件模板 pod spec create 单个仓库名 Pod::Spec
CocoaPods现在是通过target来组织的,如果项目有多个target,可以写多个target为每个target引入不同的第三方库。 写法:
1、Cocoapods环境安装 cocoapods-packager打包工具安装 sudo gem install cocoapods-packager 2、终端cd 到目录创建SDK pod lib create iComeSKD 并根据提示完成创建demo工程 3、工程中完善iComeSKD.podspec文件 # # Be sure to run `pod lib lint iComeSDK.podspec' to ensure this is a # valid spec before submit
一、上传项目到github 将框架中的主要文件放入到一个指定文件夹中,比如叫Classes或者Lib都可以 目录结构 打开终端,cd到框架目录 cd /Users/lxf/xxxx/LXFPhotoH
智人能在残酷的进化大战中存活下来,原因之一就是智人懂得将知识沉淀成外物,辅助彼此之间的合作,从而使得整个群体产生了规模效应,即1+1>2的效果。 从一个角度上说,石器时代是基于石器的组件化的时代,因为老张家的石矛(或其它石头利器)借给了老王,一样可以拿去狩猎。要想实现这个目的,一定要保证:
https://github.com/kishikawakatsumi/BookReader
【已解决】使用Cocoapods-svn插件无法正常验证 问题原因 下面的验证方法无效 pod lib lint --verbose 解决办法 需要使用插件的方法进行验证 pod repo-svn lint 你的spec文件地址
命令行过后会在根目录生成一个podspec文件,接下来就是将podspec文件完善
大致流程:通过podspec找到三方库的远程地址,然后将完整代码下载到本地指定目录,然后按照podspec的配置进行无用资源的清理,最后将清理之后的文件拷贝到Pods文件夹目录下。
前言 随着组件化的日益兴起,通过CocoaPods管理一些自己的库是基本的要求,本文将介绍如何将自己的项目支持通过CocoaPods管理以及自己在实践过程中遇到的一些问题! 绑定自己的 GitHub 帐号 请将下面的内容替换为自己的 pod trunk register 272338444@qq.com 'password' --verbose 由于是第一次注册,下面给我返回了一堆东西 opening connection to trunk.cocoapods.org:443... opened st
一、背景: Q音直播抽离成pod库分别引入到QQ音乐和Fan直播两个独立app中,而对于直播业务来讲,直播SDK通过pod本地引入集成到Demo中进行日常直播业务的开发,通过Demo来精简工程规模,提高研发效率。 但随着业务扩展直播SDK越来越庞大,出现了以下痛点: 以快速开发为目标的直播Demo工程编译时间越来越久,影响组内同事的开发效率; 直播SDK最开始以源码方式接入宿主,增加了约800s的编译时长,影响宿主开发效率; SDK引入宿主流程繁琐、CI效率低,导致测试及灰度阶段出包验证问题耗时严重
我们将使用pod lib create引导过程来创建整个pod 。那么让我们从初始命令开始:
AaronSwift是你要创建的组件工程的名称。安装过程中会提示你输入要下载工程的配置(如下:),依次输入:iOS、Swift、Yes、Quick、Yes,其中第二步如果想创建OC库,请输入ObjC。(各版本可能有不同,请根据提示输入)
最近参照了网上一大堆 CocoaPods私有仓库 的教程,按教程操作得到的pod仓库里面是这样的~
手把手教你创建 CocoaPods 公有仓库?? 前言 作为iOS开发者,CocoaPods的使用为我们开发带来了极大的便利。 我们先来看看CocoaPods本地目录中有什么 $ cd ~/.coco
你会发现 master 是一个 git 仓库,输出仓库的远程地址,发现是一个GitHub仓库
所谓Spec Repo,就是Pods的索引。一旦在podfile中设置source为某个私有repo的git地址,在进行pod update的时候就会去这个repo中进行检索,如果检索到对应的pod,会读取该Pod的podspec从而进行安装。 一个Spec Repo的目录结构如下:
相关文章 《CocoaPods公有仓库的创建》 前言 最近参照了网上一大堆 CocoaPods私有仓库 的教程,按教程操作得到的pod仓库里面是这样的~ 代码和版本描述居然混在了一起,简直太糟糕~
每创建一个组件都会带有一个 xxx.podspec 的索引文件。专门用来存放这些索引文件的库就叫做索引库。我们需要将这些索引文件上传到远程索引库才能保证其他的同事能够拿来用。
创建索引库和代码库这部分比较简单,可以参考网上资料,以下是为了演示已经创建好的索引库(码云)和代码库(Github):
在上一篇【iOS 组件化开发(一):远程私有库的基本使用】中我们已经实战了远程私有库的基本操作,但是组件不可能上传一次就完事了,随着业务的增加,我们的组件可能还需要添加更多的东西,或者修复一些问题,这
1.2 私人git服务器 参考:Linux搭建私有Git服务器以及ssh免密登陆配置
iOS组件化的实现基本基于cocoapods,如何使用cocoapods创建自己的组件库,是实现组件化的第一要素,下面就创建自己的私有Cocopods库展开实战记录。
上篇文章给搭建搭建了企业私有服务,本篇文章给大家介绍下k8s中的 资源清单 本篇文章大部分全都是理论。耐心看完将会刷新你对k8s的认知。
在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中。
最近由于要做组件化,所以就顺便看了看私有库的制作,整体上制作的过程是比较简单的,但有一些点你注意到的话会在制作过程会少去很多的麻烦,在网上搜的制作过程的文章是一大把,但当你真的遇到一些问题的时候在去找答案有些就会比较困难,所以出于这样的一个初衷我在这里就把自己整个制作过程记录下来,以及这这些过程中你需要注意的点全都一点点的写出来,保证这篇文章能完全把整个过程说清楚,让你看着这篇文章能够完全理解过程和每一步我们到底是在做什么,而不是粘贴复制命令行,完了啥都不知道。
随着 Xcode 11、Swift 5.1 的正式发布,Swift 目前已经实现了 ABI 稳定及模块稳定,语法及实现也比以往更加成熟稳定,所以我们在微商城和零售等业务线中尝试使用 Swift 开发部分业务,并在二方库中进行混编开发,在此我们将一些混编经验分享出来。
Pod库是很重要的组成部分,大部分第三方库都是通过CocoaPod的方式引入和管理,同时项目中的部分功能也可以用Pod库来做模块化。 本文是对CocoaPod的一些探究。 XS项目中的Pod库是很重要的组成部分,目前阅读器模块正在进行SDK化,需要用Pod库来管理,同时未来会做一些模块化的功能,同样需要用Pod库来处理。 本文对CocoaPods的一些内容进行探究。
podspec 文件是 Pod 库的描述文件,每个 Pod 库必须有且仅有一个这样的文件。文件名需要与我们将要创建的 Pod 库的名称一致,如我将创建的 Pod 库名称为 LixFoundation, 那么我的 podspec 文件就是 LixFoundation.podspec。
探针是由 kubelet 对容器执行的定期诊断。要执行诊断,kubelet 调用由容器实现的 Handler 有三种类型的处理程序:
CocoaPods是iOS开发中经常被用到的第三方库管理工具,我们有必要深入了解一下它对项目产生了什么影响,以及它是如何管理这些库的。
随着公司业务的不断发展,团队不断壮大的同时,项目也随之臃肿起来,如何保障团队协作的高效,自然的想到了组件化这个话题。下面总结下本人的梳理和思考。
Pod中通过共享Network Namespace的方式进行网络的共享,但是如果是以下方式进行Network Namespace共享会有问题:
该开源工具可以分析Kubernetes YAML文件和Helm 图表,以确保它们遵循最佳实践,重点关注生产就绪性和安全性。以下是如何设置和使用它。 KubeLinter是一款开源工具,可分析 Kubernetes YAML 文件和 Helm 图表,以确保它们遵循最佳实践,重点关注生产就绪性和安全性。它对配置的各个方面进行检查,以识别潜在的安全错误配置和DevOps最佳实践。 通过运行 KubeLinter,您可以获得有关Kubernetes配置文件和 Helm 图表的有价值的信息。它可以帮助团队在开发过程的早期检测并解决安全问题。KubeLinter 执行的检查的一些示例包括以非 root 用户身份运行容器、强制执行最小权限以及通过仅将敏感信息存储在机密中来正确处理敏感信息。
可以看到我们指定source_files指定在PPKit/Classes文件夹下的所有文件,所以我们的源码都放在这里就可以了
领取专属 10元无门槛券
手把手带您无忧上云