Unity游戏打包——iOS打包pod的重装和使用
本文由 NRatel 历史笔记整理而来,如有错误欢迎指正。
一、重装 pod 和使用
1、下载安装 rvm
curl -L get.rvm.io | bash -s stable
2、使环境变量生效 (zsh)
source ~/.zshrc
source ~/.profile
3、查看rvm版本
rvm -v
4、重装ruby
关闭mac sip(可能需要)
sudo rvm remove 3.0.0 (注意sudo)
sudo rvm install 3.0.0 (注意sudo)
rvm list
rvm use 3.0.0 --default (当存在多格ruby版本时)
ruby -v (确认输出结果为3.0.0)
报错,重装openssl,解决:
m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘-CSDN博客
brew uninstall --ignore-dependencies openssl@3
rm -rf /usr/local/etc/openssl@1.1
brew reinstall openssl@1.1
5、安装 cocoapods
sudo gem install -n /usr/local/bin cocoapods
pod --version
6、Pod 使用基础:
⑴、在 xcode 的根目录下,使用 pod init 可创建一个默认的 podfile。
⑵、编辑 Podfile,它定义了:
目标平台:platform :ios, '10.0'
是否使用框架:use_frameworks!
目标依赖的库:target ‘xxx’ do xxx end
多个目标共享相同的依赖:abstract_target ‘xxx’ do end
指明安装依赖后执行一些特定操作 post_install do |installer|
⑶、在 xcode 的根目录下(podfile所在目录),使用 pod install安装依赖
⑷、在xcode 的根目录下(podfile所在目录),使用 pod update更新依赖(需要时)
可指定更新某个库,如:pod update Alamofire
二、相关概念知识自我答疑
问题1:为什么要安装ruby 和 rvm?
有些sdk需要更新 pod,
pod 安装/更新 可能需要先更新 ruby(否则会失败)
(Podfile是ruby代码)
更新 ruby 需要先下载安装 rvm
问题2:什么是ruby 和 rvm?
Ruby: Ruby 是一种面向对象的高级编程语言,以其简洁明了的语法和强大 的元编程能力而受到开发者的喜爱。Ruby 支持多种编程范式,包括函数式、 命令式和反射式编程。
RVM(Ruby Version Manager): RVM 是一个用于管理和使用多个 Ruby 环 境的工具。它允许开发者在一个系统上安装多个版本的 Ruby,并能够在这 些版本之间轻松切换。这对于需要在不同项目中使用不同 Ruby 版本的开发 者来说非常有用,因为不同的项目可能依赖于不同版本的 Ruby 或其生态系 统中的库(gem)。RVM 不仅能管理 Ruby 解释器的版本,还能管理 gemsets, 即一组相关的 gems,这样就可以为每个项目或每个Ruby版本创建独立的 gem 环境,避免版本冲突。
问题3、Unity在导出xcode工程后,为什么会变成 pod工程?
原因:Unity引入了 ExternalDependencyManager
问题4、使用 pod,对 xcodebuild 构建有什么影响?
⑴. 打开项目时,应使用 .xcworkspace 而不是 .xcodeproj
当在项目中使用 CocoaPods 后,需要使用生成的 .xcworkspace 文件来打开和构建项目,而不是原来的 .xcodeproj 文件。因为 .xcworkspace 文件包含了你的项目以及 CocoaPods 管理的所有依赖。
⑵. xcodebuild 构建命令的对应调整
当使用 xcodebuild 构建项目时,需要指定 .xcworkspace 文件,而不是 .xcodeproj 文件。如下所示:
xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme -configuration Release
⑶、在执行 xcodebuild 前 应保证已执行过 pod install
问题5、Scheme 是什么?
Scheme,翻译为计划,方案。
一个 scheme 是一个配置文件,它包含了一系列的动作(Actions),这些动作包括构建(Build)、测试(Test)、运行(Run)、分析(Analyze)、存档(Archive)等。
在 Xcode 中,选择 Product > Scheme > Edit Scheme,可以打开 Scheme 编辑器。然后配置每个动作的详细设置。
问题6、Podfile.lock 是什么?
Podfile.lock 是 CocoaPods 依赖管理工具生成的一个重要文件,用于锁定和记录你项目中所有 CocoaPods 依赖的具体版本。这个文件确保每个团队成员或 CI/CD 环境在执行 pod install 时使用的依赖版本是一致的,从而避免版本不兼容问题。
版本锁定: Podfile.lock 文件记录了 Podfile 中指定的每个库的确切版本。当你运行 pod install 时,CocoaPods 会参考 Podfile.lock 中的版本信息,而不是直接从 Podfile 中获取最新兼容版本。这确保了每次安装的依赖版本一致。
团队协作: 在团队开发中,如果没有 Podfile.lock,不同开发者在不同时间运行 pod install 可能会安装不同版本的依赖库,导致潜在的兼容性问题。Podfile.lock 通过锁定依赖版本,确保所有开发者使用相同版本的库。
CI/CD 环境一致性: 在持续集成和持续部署环境中,Podfile.lock 确保构建服务器使用与开发环境相同的依赖版本,避免了由于依赖版本变化而导致的构建失败或行为不一致。
Podfile.lock 文件包含以下主要内容:
PODS:列出所有已安装的 pods 及其具体版本。
DEPENDENCIES:列出 Podfile 中声明的依赖库及其版本要求。
SPEC CHECKSUMS:每个 pod 的规格(spec)的校验和,用于验证 pod 规格的完整性。
PODFILE CHECKSUM:整个 Podfile 文件的校验和,用于检测 Podfile 是否发生了变化。
COCOAPODS:CocoaPods 的版本信息。
通过提交 Podfile.lock 到版本控制系统,可以避免由于依赖版本不一致导致的问题,从而提高项目的稳定性和可维护性。
但由Unity导出的xcode项目有自己的打包工作流,因此一般并不需要它提交到版本控制系统。