uts-ios平台 使用CocoaPods

在 uts 插件中使用 CocoaPods 依赖

在 uts 插件中使用 CocoaPods 依赖库,需要在 config.json 中 dependencies-pods 节点做相应配置,下面是配置示例:

{
    "deploymentTarget": "9.0",   // 可选,插件支持的最低 iOS 版本  默认:9.0"
    "dependencies-pods": [ // 可选, 需要依赖的 CocoaPods 库, HBuilderX 3.8.5+ 版本支持
    {
        "name": "WechatOpenSDK",
        "version": "2.0.2"
    }, {
        "name": "Alamofire",
        "version": "5.7.3", //配置 repo 时可不指定 version
        "repo": {  // 可选,配置 pod 库为指定仓库,配置repo时,应至少指定 git。 (HBuilder X 3.8.10+ 版本新增支持)
            "git": "https://github.com/test/Alamofire.git", //指定 pod 库的仓库地址
            "tag": "5.7.3", // 指定该 pod 库仓库的 tag
            "branch": "dev", // 指定该 pod 库仓库的分支
            "commit": "b309714f3aa5091f1ce8d932094b7594ed7acad9" // 指定该 pod 库仓库的某次commit
        }
    }]
}

注意:拷贝以上代码时请手动删除注释,实际项目中config.json中不能包含注释信息

配置说明:

  • deploymentTarget:插件支持的最低 iOS 版本号,此节点为可选项,默认设置为 9.0.
    • 插件支持的最低版本号应该设置为所有依赖的三方库(包含 framework .a pod )中最低支持版本号中的最高的一个。
    • pod 库的最低支持系统版本号可在 pod 库的 spec 文件或者 readme 中查看。
  • dependencies-pods:插件需要依赖的 pod 库, HBuilderX3.8.5+ 版本新增支持
    • 把需要依赖的 pod 库相关信息配置在 dependencies-pods 节点下,需要明确指定每个 pod 库的名字 (name)。 按需指定版本号 version 或者 repo (至少应配置 version 或 repo 中的一个,repo 优先级高于 version, 配置 repo 时 version 不再生效),可同时配置多个 pod 依赖库。目前不支持通过 podfile 文件直接设置,也不支持 podfile 文件中除了 name 、 version 、pod 特定仓库之外的其他配置项。
    • 为了保证插件的稳定性,避免因未指定 pod 库版本,执行 pod install 之后 pod 库最新版本造成的代码不兼容问题,在未配置 repo 时需要明确指定 pod 库的具体版本。此时 version 字段不可省略,不可为空字符串。 建议将 version 配置为 "9.7.0" 这种明确的数字版本号,不建议使用 ~>, >, >=, <, <= 等带符号的配置。
    • repo: 自定义 pod 库仓库地址信息, HBuilderX3.8.10+ 版本新增支持
      • 如果你需要自己指定 pod 库的仓库地址: git, tag, branch, commit 等信息,可以通过repo字段配置。请注意: repo 是一个对象,其中至少应包含 git 字段(用来指定 pod 库的仓库地址)。当你同时指定 tag、 branch、 commit 时,CocoaPods 会默认使用 commit,通常可以根据需要指定 tag / branch / commit 中的一个。当正确配置 repo 时 version 不再生效,此时可以省略 version 的配置。
    • 使用 CocoaPods 官方默认地址 (source 'https://cdn.cocoapods.org/'), 暂不接受 source 配置。

CocoaPods 环境配置

在Mac系统上使用标准基座真机运行时才需要配置 CocoaPods 环境, 使用自定义调试基座提交云端打包则可以不配置 CocoaPods 环境。 在Windows系统上不支持 CocoaPods 环境,只能提交云端打包使用自定义调试基座。

CocoaPods安装

正常安装 CocoaPods 需要在终端执行下述命令

gem install cocoapods

CocoaPods 安装成功

这会耗费一段时间,完成后可查看 cocoapods 的版本号

pod --version

如: 1.12.1

也可以查看 pod 的安装位置

which pod

如:/Users/dcloud/.rvm/rubies/ruby-3.0.0/bin/pod

至此 CocoaPods 已经安装完成,可以尝试 Search 下一 pod 库:

pod search Alamofire

如果执行 pod search 失败,说明当前网络不能正常访问 github 或者 cdn, 更多信息详见无法访问 github , CDN错误

CocoaPods 安装失败

  • 如果执行 gem install cocoapods 之后报下面的错误:
ERROR:  Error installing cocoapods:
        The last version of activesupport (>= 5.0, < 8) to support your Ruby & RubyGems was 6.1.7.3\. Try installing it with `gem install activesupport -v 6.1.7.3` and then running the current command again
        activesupport requires Ruby version >= 2.7.0\. The current ruby version is 2.6.10.210.

说明缺少activesupport插件,在终端执行以下命令

sudo gem install activesupport -v 6.1.7.3

插件安装成功后再次执行 sudo gem install cocoapods 安装 CocoaPods.

  • 如果报错如下,说明需要升级 gem 和 ruby
Building native extensions. This could take a while...
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/ext/ffi c
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby-I/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0-r./siteconf20230612-9566-nht0td.rbextconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/us/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development environment, ruby-dev or ruby-devel for example.
extconf failed, exit code 1
Gem files will remain installed in /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5 for inspection.
Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-22/2.6.0/ffi-1.15.5/gem make.out

下面是升级 Gem 和 Ruby 的方法

升级 Gem

Gem 是管理 Ruby 标准包,如果 Gem 版本过低可能造成无法安装 CocoaPods,升级 Gem 使用下述命令

gem -v  //查看当前gem版本
sudo gem update --system   //升级gem

升级 Ruby

MacOS 会自带 Ruby,但可能系统的Ruby版本过低,导致无法安装 CocoaPods, 可通过以下方式更新 Ruby

  • 如果没有安装 Homebrew,可以先在终端中输入以下命令安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Ruby 的升级有以下两种常见的方式,可根据自己的需要任选其中一种:

通过 RVM 升级 Ruby

  • 安装 RVM:在终端中输入以下命令安装 RVM:
curl -sSL https://get.rvm.io | bash -s stable

这个命令会从 RVM 官网下载安装脚本并运行。安装完成后,需要在终端中执行以下命令以便让 RVM 生效:

source ~/.rvm/scripts/rvm

  • 查看 rvm 版本
rvm -v

  • 查看可安装的 ruby 版本列表
rvm list known

  • 安装指定 ruby 版本(eg:安装 ruby 3.0.0版本)
rvm install ruby-3.0.0

  • 切换 Ruby 使用版本(eg:指定使用3.0.0版本)
rvm use ruby-3.0.0

通过 Homebrew 升级 Ruby

在终端执行如下命令

 brew install ruby

安装完成后,ruby 默认使用的是系统自带的版本

  • 查看版本号
ruby -v

  • 查看 ruby 安装路径
 which ruby

  • 配置环境变量
 echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc

  • 配置完成后重启终端,再次查看 Ruby 版本号,校验是否为安装的 Ruby版本

升级完 Gem 和 Ruby 后,在终端重新输入如下命令安装 CocoaPods。

sudo gem install cocoapods

安装完成后,可如上文所示,查看 CocoaPods 版本号。

常见问题
MAC 环境真机运行 uts 插件时未安装 CocoaPods
错误信息:uni_module xxxx (iOS) 存在pod三方依赖库,请先安装 CocoaPods! 说明:出现此错误是因为当前环境没有安装 CocoaPods 处理方法: 请参照上述章节描述的方式安装 CocoaPods 工具。

找不到指定版本的 pod 库,或者找不到指定依赖
错误信息:CocoaPods could not find compatible versions for pod "xxx" 或者 None of your spec sources contain a spec satisfying the dependency: 报错示例:

'Analyzing dependencies\n' +
    '[!] CocoaPods could not find compatible versions for pod "HandyJSON":\n' +
    '  In Podfile:\n' +
    '    HandyJSON (= 2.0.2)\n' +
    '\n' +
    'None of your spec sources contain a spec satisfying the dependency: `HandyJSON (= 2.0.2)`.\n' +
    '\n' +
    'You have either:\n' +
    ' * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.\n' +
    ' * mistyped the name or version.\n' +
    ' * not added the source repo that hosts the Podspec to your Podfile.\n',

说明:出现此错误是因为执行 pod install 时找不到指定依赖。

处理方法:

请首先确保配置的 pod 库 name 正确,配置的 version 不高于 pod 库发行的最高版本号。
确保未使用存放在私有仓库的 pod 库。
真机运行时在确保配置正确的前提下触发重新编译。
云打包时请重新打包,或者联系管理员。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容