052*:CocoaPods的原理和组件化实现

问题:

 

目录:

1:HomeBrew

2:RVM

3:Ruby

4:CocoaPods

前言:

Cocoapods安装顺序

Xcode->HomeBrew->RVM->Ruby->Cocoapods;

正文:

一:安装HomeBrew

1:HomeBrew简介

Homebrew:
Homebrew 是一款 Mac OSX 环境下高效便捷的包管理器(通过 brew 命令执行相关包管理),推荐日常 Mac OSX 环境下安装、卸载软件的使用;

2:HomeBrew国内自动安装脚本

  提取码:hd5t

3:安装步骤

3.1:下载网盘中的文件

3.2:打开终端运行脚本命令

Homebrew 国内自动安装脚本
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

3.3:按照提示,进行下载

下载完成的提示:

Homebrew 安装完成之后,处理安装 Ruby 版本。

3.4:查看安装结果版本号

brew -v

 二:下载RVM

 1:RVM简介

RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。

2:下载RVM

上github下载rvm,https://github.com/rvm/rvm.git

 网盘:  提取码:hd5t

3:安装RVM

3.1:双击打开下载下来文件夹中的/bin/rvm-installer

3.2:查看安装结果版本号

rvm -v

三:Ruby的安装

ruby 的安装与切换

1:列出已知的 ruby 版本
rvm list known

2:安装一个 ruby 版本
rvm install 1.9.3
这里安装了最新的 1.9.3, rvm list known列表里面的都可以拿来安装。

3:使用一个 ruby 版本
rvm use 1.9.3

4:如果想设置为默认版本,可以这样
rvm use 1.9.3 --default 

5:查询已经安装的 ruby
rvm list

6:卸载一个已安装版本
rvm remove 1.9.2

7:ruby版本号查询
ruby -v

四:安装cocoapods

1:更新Ruby源

更换国内镜像
1:查看镜像
gem sources -l
2:删除原先的镜像
gem sources --remove https://rubygems.org/ 
3:重点这里不要用淘宝的镜像了,用这个镜像
gem sources -a https://gems.ruby-china.com/
4:查看是否更换成功
gem sources -l

2:安装cocoapods

1:Mac OS X 10.11前
sudo gem install cocoapods
2:Mac OS X 10.11后
sudo gem install -n /usr/local/bin cocoapods

3:安装本地库

pod setup

4:执行完毕后, 查看pod版本看安装是否成功:

pod --version

五:CocoaPods使用

1:创建命令

1:cd 项目目录地址

2: 创建 Podfile 文件
pod init

3:编辑 
vim Podfile

4: 安装
pod install

5: 更新所有依赖的开源库
pod update

6: 搜索框架
pod search AFNetworking

 2:podfile文件实例

# 1:指明依赖库的来源地址,不使用默认 CDN
source  '[https://github.com/CocoaPods/Specs.git](https://github.com/CocoaPods/Specs.git)'

# 2:说明平台是ios,版本是8.0
platform :ios, '8.0'

# 3:屏蔽所有第三方框架警告
inhibit_all_warnings!    

# 4:针对ProjectName target引入第三方的库
target 'ProjectName' do

  # 5:Pods for ProjectName
  # 5.1:网络库
  pod 'AFNetworking'
  pod 'YTKNetwork'
  pod 'SDWebImage'
  pod 'Reachability', '~> 3.2'
  # 5.2:服务类
  pod 'QQ_XGPush'
  pod 'Bugly'
  # 5.3:UI
  pod 'Masonry'
  pod 'MBProgressHUD'
  pod 'MJRefresh'
  pod 'EAIntroView'
  pod 'SDCycleScrollView'
  pod 'DZNEmptyDataSet'
  pod 'XLForm'
  pod 'SHSPhoneComponent'
  pod 'BEMCheckBox'
  pod 'SCLAlertView-Objective-C'
  # 5.4:工具组件类
  pod 'ChameleonFramework'
  pod 'FDFullscreenPopGesture'
  pod 'IQKeyboardManager'
  pod 'YYKit'
  pod 'UIAlertController+Blocks'
  pod 'LBXScan/LBXNative'
  pod 'LBXScan/UI'
  pod 'UITableView+FDTemplateLayoutCell'
end

3:编辑 Podfile文件。

执行 vim Podfile命令后,会打开上一步骤创建的 Podfile文件,你需要通过 vim编辑此文件,默认进入命令模式

编辑 Podfile文件时,至少需要会使用的几个 shell 命令:

键盘命令描述
i input,输入模式
ESC 输入模式退出到命令模式
shift+ : 命令模式下,输入该键盘组合命令,就会进入末行模式
wq 末行模式下,输入 wq ,即 write and quit,保存并退出!

 

 

 

 

 

 

4:Podfile 版本号含义:

= version 要求版本大于或者等于version,当有新版本时,都会更新至最新版本
< version 要求版本小于version,当超过version版本后,都不会再更新
<= version 要求版本小于或者等于version,当超过version版本后,都不会再更新
~> version 比如 version=1.1.0 时,范围在[1.1.0, 2.0.0)。注意2.0.0是开区间,也就是不包括2.0.0

 六:创建组件化工程

1:创建组件

1.1:使用终端创建ZKComponent模块

pod lib create ZKComponent

1.2:配置模块信息

1: 配置你的名字
2:配置你的邮箱
3:配置平台
4:配置语言
5:配置是否需要demo
6:适配None
7: 配置测试
8:配置前缀

1.3:配置完成如下:

1.4:之后自动打开demo项目,项目结构如下:

1.5:本地组件的目录如下:

2: 创建组件代码

2.1:在classes中写入自己组件的代码:ZKAddTest

2.2:使用pod install 来安装项目,相当于git push。从本地的临时仓库里面拉去代码,让example项目对组件进行依赖。

2.2.1:首先cd 到example的目录中,之后pod install

2.3:组件中定义一个头文件,引入需要暴露的文件的名字

 2.4:再examplate中引入组件的头文件,之后调用

3: 组件中引入第三方的库,以及引入头文件

1:创建ZKComponentThree组件

2:在组件中的podspec 中引入第三方库,以及引入头文件

 

 # 1:组件中引入其他的第三方。
   s.dependency 'AFNetworking'
   s.dependency 'Masonry'
   
   # 2:组件中引入 头文件
   s.prefix_header_contents = '#import "Masonry.h"', '#import "AFNetworking.h"'

3:使用pod install 安装引入第三方库

4:安装结果:

4:如果:项目中引入的自己的组件的话,需要指明路径。可以做到加载第三方组件和自己的本地组件。

1:需要指明路径,之后执行pod install

5:资源文件加载

1:加载图片资源,解开加载图片的路径配置,不然无法访问图片。

2:引用图片,bundle获取图片

  NSString *bundlePaht = [[NSBundle bundleForClass:[self class]].resourcePath stringByAppendingPathComponent:@"/ZKComponentThree.bundle"];
    NSBundle *bundle = [NSBundle bundleWithPath:bundlePaht];
    
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.image = [UIImage imageNamed:@"share_wechat" inBundle:bundle compatibleWithTraitCollection:nil];

6:创建远程私有库

6.1:在github上创建一个MySpecs仓库
具体步骤:登录github-->点击右上角“+”-->选择 new repository-->输入Repository name为MySpecs,选择仓库类型为 private,点击Create repository。
6.2:获取私有组件库地址:https://github.com/zyzmlc/ZKComponentTest.git
6.3: 和本地仓库建立联系.
1:进入到引用组件的项目的目录,也就是主工程目录
cd /Users/xiaodong/Desktop/ZKComponentTest/Example

2:远端仓库建立联系

git remote add origin  https://github.com/zyzmlc/ZKComponentTest.git

3:查看关联远端

 

 

 

 

 

 

 

 

 

 

 

注意:

 1:ERROR: Error installing sass:   ERROR: Failed to build gem native extension.

udo gem install sass
Building native extensions. This could take a while...
ERROR:  Error installing sass:
    ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.11.1/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -I /Library/Ruby/Site/2.3.0 -r ./siteconf20191022-2775-1q9uxye.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /Library/Ruby/Gems/2.3.0/gems/ffi-1.11.1 for inspection.
Results logged to /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.11.1/gem_make.out

解决方法:
1:如果是之前的 Mac OS 版本,网上都是通过 下面命令 来解决,但是我在 Mac OS 10.14 版本下,依然存在报错。

xcode-select --install

2:执行第二个命令

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

 

引用:

1:CocoaPods详解之----使用篇 pod install/pod update更新慢的问题,

2:浅析 Cocoapods-Binary 实现

3:【iOS开发】 2020最新安装CocoaPods -- 快速安装Homebrew, 升级Ruby版本

4:Cocoapods 安装及使用

5:iOS组件化之制作私有库 ,上传到pod.

6:iOS组件化解决图片显示问题

7:iOS-底层原理 35:组件化(一)方案

8:iOS组件化之制作私有库 ,上传到pod.

9:iOS 如何发布自己的CocoaPods框架到GitHub

 

 

posted on 2020-12-28 00:01  风zk  阅读(264)  评论(0编辑  收藏  举报

导航