Apple开源
github.com.apple:包含 Swift语言和swift-package-manager swift-foundation swift-nio等Swift组件库
opensource.apple.com:苹果专门设计的一个开源官网, 列出了苹果主导和参与的一些开源库
apple-oss-distributions:iOS/MacOS 系统组件库, 包括内核xnu、动态链接器dyld、objc4(runtime) GCD(libdispatch), 和各个系统组件库
开发环境
xcode
Xcode是苹果公司提供的集成开发环境(IDE),用于开发iOS、macOS、watchOS和tvOS应用程序。它是iOS开发的主要工具,为开发者提供了一套丰富的工具和功能,用于编写、调试和部署应用程序。
Homebrew
Brew(全称Homebrew)是一个流行的包管理器,用于在 macOS 操作系统上安装和管理软件包。它允许用户通过命令行界面来快速安装、更新和卸载各种开源软件和工具。
安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
添加环境变量(.bash_profile)
export PATH="/opt/homebrew/bin:$PATH"
查看版本
brew --version
使用brew安装各种软件包
brew install <package-name>
请注意,安装 Brew 需要在终端中执行命令,所以请确保具有管理员权限或正确的用户权限来执行安装过程
RVM
RVM(Ruby Version Manager)是一个用于管理Ruby版本的工具,它允许在同一台计算机上安装和切换不同版本的Ruby。
安装设置RVM
curl -L https://get.rvm.io | bash -s stable
添加环境变量(.bash_profile)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
查看版本
rvm -v
Ruby
Ruby是一种动态、开源的脚本语言,在使用CocoaPods时,需要安装Ruby并使用Ruby的Gem包管理器来安装和管理CocoaPods。
使用brew安装ruby
brew install ruby
也可以指定版本
brew install ruby@3.1
使用rvm安装ruby指定版本
rvm install x.x.x
添加环境变量(.bash_profile)
export PATH="/usr/local/opt/ruby/bin:$PATH"
查看ruby目录
which -a ruby
查看版本
ruby --version
RubyGems
RubyGems是一个用于Ruby编程语言的包管理系统和软件库。它是Ruby社区中广泛使用的官方包管理器,用于安装、管理和发布Ruby库(也称为Gem)。
升级到最新RubyGems
gem update --system
查看版本
gem --version
查看环境配置
gem environment
安装指定的 gem
gem install <gem_name>
卸载指定的 gem
gem uninstall <gem_name>
更新指定的 gem
gem update <gem_name>
列出已安装的 gems
gem list
CocoaPods
在iOS开发中,CocoaPods是一个流行的依赖管理工具,用于管理和集成第三方库和框架到iOS项目中。它简化了在iOS应用程序中使用外部库的过程,使开发人员能够更轻松地管理项目的依赖关系。
安装cocoapods
sudo gem install cocoapods
重新安装或者升级
sudo gem install cocoapods --pre
查看版本
pod --version
查看目录
which pod
清空所有的缓存
pod cache clean --all
安装第三方依赖(安装新的第三方库,即使已经有一个Podfile)
cd ios
pod install
注意,如果通过 pod --version 能看到对应版本,但执行pop install 后仍出现 zsh: command not found: pop,则可以通过which pod检查下pop的安装目录再执行命令,例如:/Users/xxx/.rbenv/shims/pod install
更新第三方依赖(更新第三方库)
pod update
注意:打开项目时,请使用 Xcode 打开生成的 Runner.xcworkspace 文件,而不是原来的 Runner.xcodeproj 文件。这样才可以正常在项目中使用安装的第三方库,否则可能会报错,项目无法编译。
每当需要添加、更新或删除第三方库时,只需编辑 Podfile 文件并再次运行 pod install 命令即可。CocoaPods 会重新安装依赖库,并更新项目配置。
环境变量配置
演示完整的环境变量配置,这里以我自己的环境配置为例,修改文件 /Users/xxx/.bashrc
export PATH=${PATH}:/Users/xxx/Desktop/flutter/bin
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export ANDROID_HOME=/Users/xxx/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export GRADLE_HOME=/Users/xxx/.gradle/wrapper/dists/gradle-6.5-all/2oz4ud9k3tuxjg84bbf55q0tn/gradle-6.5
export PATH=$PATH:$GRADLE_HOME/bin
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/usr/local/opt/ruby/bin:$PATH"
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
echo "alias python=/usr/bin/python3" >> ~/.zshrcalias python=/usr/bin/python3
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
修改文件/Users/xxx/.zshrc
source ~/.bash_profile
遇到的一些问题
问题一
日志信息:zsh: command not found
解决方案:提示命令不存在,需要检查环境变量是否配置正确。.bash_profile 是一个隐藏的配置文件,主要是用来配置bash shell的,我们可以在.bash_profile文件中配置环境变量。
但是随后会发现,在 ~/.bash_profile 中配置环境变量,可是每次重启终端后配置又不生效了,需要重新执行 : $source ~/.bash_profile后才会生效。这是因为从 macOS Catalina 版开始,Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell,所以还需要在 .zshrc 文件中添加 source ~/.bash_profile即可生效。
source ~/.bash_profile
问题二
日志信息:While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
解决方案:在终端中,使用 sudo 可以通过管理员权限来执行某个命令
sudo gem install cocoapods -v x.x.x
问题三
日志信息:warning: Insecure world writable dir /opt/homebrew/bin in PATH,mode 040777
系统的ruby 2.6.0 版本太低,于是就升级ruby,发现通过homebrew升级的 ruby 并没有覆盖成功
解决方案:
第一步:首先安装 rbenv
brew install rbenv
第二步:需要在文件~/.zshrc中加入如下语句,否则rbenv无法成功修改系统的ruby版本:
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
第三步:添加完成后,安装ruby指定版本,并指定默认使用的版本
rbenv install x.x.x
rbenv global x.x.x
执行成功后查看系统默认版本
ruby --version
刚开始未生效,然后重启终端,再次输出版本就可以了。
问题四
日志信息:Flutter: CocoaPods's specs repository is too out-of-date to satisfy dependencies
解决方案:
- flutter clean
- Delete /ios/Pods
- Delete /ios/Podfile.lock
- flutter pub get
- from inside ios folder: pod install
- flutter run
问题五
日志信息:/Users/xxx/Desktop/iOSProjects/XXX/xxx.xcodeproj Signing for "xxx" requires a development team. Select a development team in the Signing & Capabilities editor.
解决方案:在签名和功能编辑器中选择开发团队
问题六
日志信息:[!] No `Podfile' found in the project directory.
解决方案:这是因为首次在依赖第三方库的时候,项目中并不存在Podfile文件,所以首次需要先创建该文件
cd ios
pod init
将以下内容写入到Podfile文件中 (vim Podfile)
source 'https://github.com/CocoaPods/Specs.git'
# 将依赖库以动态框架的形式引入到项目中
use_frameworks!
# 将依赖库的头文件以模块化的方式进行引入
use_modular_headers!
# 禁止在编译依赖库时产生警告信息
inhibit_all_warnings!
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
target '项目名称' do
use_frameworks!
use_modular_headers!
# 依赖网络请求库,并指定版本
# https://github.com/Alamofire/Alamofire
pod 'Alamofire' , '~> 5.8.0'
end
这里以依赖网络库Alamofire为例,依赖好需要的第三方库之后,然后在执行命令 pop install
依赖完成之后,记得使用xxx.xcworkspace打开项目,这个时候就可以看到项目中依赖配置和第三方库的源代码
问题七
日志信息:使用pop install依赖第三方库,然后一直卡在此处,Cloning spec repo cocoapods from https://github.com/CocoaPods/Specs.git
解决方案:手动替换仓库,去GitHub手动下载,或者一直耐心的等...
问题八
日志信息:An error occurred while processing the post-install hook of the Podfile.
解决方案:Xcodeproj是CocoaPods用ruby开发的一个插件库,可以用来新建、修改Xcode工程。执行以下命令之后,重新再执行 pod install
gem install xcodeproj
问题九
日志信息:ruby3.2删除了对 exists 的支持,导致出现 undefined method `exists?' for File:Class
解决方案:把ruby的版本号降为3.1.2,重新安装cocoapods
打包版本发布
第一步,选择Product > Archive
如果Archive选项是灰色且无法点击,这是因为项目没有签名证书。选择 Xcode -> Preferences -> Accounts,确保开发者账号已经添加到 Xcode 中,选择好正确的 Team。
第二步,选择Distribute App
Distribute App(分发应用程序):将应用程序准备好并发布到 App Store 或其他分发渠道,使其可供用户下载和安装的过程。
Validate App(验证应用程序):在将应用程序提交到 App Store 之前,对应用程序进行验证的过程。
第三步,这里我们就以给测试人员打包为例,选择Ad Hoc,然后一直下一步...最后一步导出文件xxx.ipa,然后把它上传到蒲公英之后,就可以提供下载链接给内部测试人员下载测试了。