[Android开辟学iOS系列] iOS项目环境搭建和依赖管理

打印 上一主题 下一主题

主题 752|帖子 752|积分 2256

iOS项目环境搭建和依赖管理

一个项目总是会依赖一些库, 有些是第三方的, 有些可能是项目自身为了复用拆出去的.
现有主流的iOS依赖有多种情势, 比如CocoaPods, Carthage和swift package.
本文是一些环境搭建和使用项目依赖相关的条记.
全局环境准备

基本上iOS开辟都要准备的环境, 这些设置是全局的, 在每个机器上设置一次就行. (本文为mac环境).
homebrew: (已有可跳过)
  1. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
复制代码
rbenv

rbenv是一个管理ruby版本的工具, 如果同一个机器上有多个代码库, 可以用它来机动切换ruby在差别项目中的版本.
具体可以看一下项目介绍: https://github.com/rbenv/rbenv
setup ruby (这里选一个全局的版本号, 可根据具体环境更改):
  1. brew install rbenv ruby-build
  2. rbenv install 3.1.3
  3. echo "export PATH="/opt/homebrew/bin/rbenv:\$PATH"" >> ~/.zshrc
  4. echo "eval "\$(/opt/homebrew/bin/rbenv init -)"" >> ~/.zshrc
  5. source ~/.zshrc
  6. rbenv global 3.1.3
复制代码
验证安装乐成:
  1. ruby -v
  2. //得到刚刚指定的版本
  3. which ruby
  4. //得到目录: $HOME/.rbenv/shims/ruby
复制代码
Bundler和CocoaPods

Bundler(https://bundler.io/)和CocoaPods(https://cocoapods.org/)都是dependency manager.
它们管理的依赖种类差别.
Bundler用来下Ruby gems, 即Gemfile中的依赖.
CocoaPods用来下pod, 即Podfile中写的pods依赖.
但cocoapods本身是一个ruby gem, 所以它被bundler管理.
(可以想象bundler是大经理, cocoapods是小领导, 此处可以画一个树形图表现, 如果我记得的话.) (但是我忽然决定不画了, 由于懒.)
iOS世界中还有一个著名的ruby gem是fastlane, 本文并不涉及就不睁开讲了.
我们先把这两个工具安装到电脑上:
  1. gem install bundler
  2. gem install cocoapods
  3. pod setup
复制代码
Optional

你可能还必要的格式化工具:
  1. brew install swiftformat
复制代码
已有项目的配置

我们拿到一个新项目后往往必要拉它的依赖.
如果你的项目中有Gemfile文件
  1. bundle install
复制代码
之后发现还有Podfile文件:
  1. bundle exec pod install
复制代码
这些命令是每个项目都必要执行的, 当项目依赖变更时必要重新执行这些:
  1. bundle install
复制代码
  1. bundle exec pod install
复制代码
M1电脑可能必要配置:
  1. bundle config build.ffi --enable-system-libffi
  2. bundle config set --local path 'vendor/bundle'
  3. // 这个命令运行完之后当前目录下会多出一个`.bundle/`文件夹.
复制代码
命令行中的工作就基本做完了, 剩下打开xcode, 如果还有swift package xcode会帮你解析的.
CocoaPod

这里以CocoaPod为例讲一下如何添加使用一个CocoaPod库, 以及相关的文件.
安装cocoapods这一步我们在之前setup环境的时候已经跑过了:
  1. gem install cocoapods
  2. pod setup
复制代码
每一个机器只要跑一次就行, 可以跳过.
CocoaPods有一个公开的specifications repo:
https://github.com/CocoaPods/Specs
这是一个中央化的代码仓库, 比较流行的库都放在上面.
官网是: https://cocoapods.org/
在这里可以搜索任何你想要的cocoapods库.
使用一个公开的库

让我们拿一个比较流行的库试试: https://github.com/Alamofire/Alamofire
首先在项目的根目录run:
  1. pod init
复制代码
会创建一个Podfile. (如果项目中已经存在了会报错.)
这个文件名是固定稳定的.
用xcode打开这个文件:
  1. open -a Xcode Podfile
复制代码
里面的内容是这样: (这里UsePublicCocoaPods是我的项目名)
  1. # Uncomment the next line to define a global platform for your project
  2. # platform :ios, '9.0'
  3. target 'UsePublicCocoaPods' do
  4.   # Comment the next line if you don't want to use dynamic frameworks
  5.   use_frameworks!
  6.   # Pods for UsePublicCocoaPods
  7. end
复制代码
我们在这里加上一行, 用上Alamofire的最新版本:
  1. target 'UsePublicCocoaPods' do
  2.   # Comment the next line if you don't want to use dynamic frameworks
  3.   use_frameworks!
  4.   # Pods for UsePublicCocoaPods
  5.   pod 'Alamofire', '5.6.4'
  6. end
复制代码
然后:
  1. bundle exec pod install
复制代码
(这里如果遇到问题, 记得在项目目录中跑bundle config set --local path 'vendor/bundle').
安装完成之后会产生一些diff.

  • 项目下多了Pods文件夹. (应该被ignore)
  • 多了Podfile.lock文件. (不应该被ignore)
  • UsePublicCocoaPods/UsePublicCocoaPods.xcworkspace/和UsePublicCocoaPods/UsePublicCocoaPods.xcodeproj/project.pbxproj 都有改变.
这里必要查抄一下.gitignore的配置.
然后就可以在代码里import Alamofire并使用它的代码了.
Dependency management tools

iOS中有多种依赖管理工具类型:

  • CocoaPods
  • Carthage
  • Swift package manager
CocoaPods

CocoaPods
比较老的依赖类型, 但是很多项目仍旧在用.
Carthage

Carthage
build出来的是字节码, 一样平常也叫framework.
Swift package manager

swift-package-manager
比较新的依赖管理类型, 一样平常在Xcode的UI界面里利用.
本文就不介绍了.
项目布局和其他Trouble Shooting

Files and folders

Xcode是一个神奇的IDE, 它的文件夹叫”Group”.
在其中的文件分为”物理上存在”和”引用上存在”两种环境.

  • 删除文件的时候会问你只是删了引用(仅在Xcode里看不见)照旧要进一步删了这个文件(物理上也删除).
  • 添加文件的时候仅仅拷贝到文件目录里是不敷的, 必要”Add Files”, 打开目录添加一下, 才能在Xcode里也可见.
Project文件

ProjectName.xcodeproj/project.pbxproj
Project文件挺烦人的, 每新增/重命名一个文件它都会有diff.
有一些脚本工具可以资助将文件排序: https://github.com/WebKit/webkit/blob/main/Tools/Scripts/sort-Xcode-project-file
这样产生diff之后运行一下(可以添加到git hook里), 文件会有序一些, 多人合作的时候不轻易产生辩论.
真机调试

真机调试必要有证书, 并不是任意抓个机器连上线就能安装应用.
当设备的OS版本较高但Xcode版本较低时, 可能必要添加一些DeviceSupport文件:
比如:
将所缺版本拷贝到这个目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
重启xcode再试.
References


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表