【项目】运行iOS项目的一般流程

之前在想要运行项目Demo的期间,遇到了很多问题,也在上面花费了不少时间。因此在这里记录一下运行iOS项目的基本流程和一些通用问题。

git相关

1. 安装Homebrew及git

Homebrew是macOS上的免费开源软件包管理器,能帮助用户更轻松安装、更新和管理第三方软件包,后面还会用到。在终端执行命令:

brew -v

如果已经安装了Homebrew,将看到Homebrew的版本号。如果没有,就按照官方文档中的说明进行安装。安装好后再通过Homebrew安装git:

brew install git

安装完毕后执行:

git -v

如果显示git的版本号,则表示已成功安装。

2. 生成ssh密钥,克隆仓库到本地

主要是要将生成的ssh密钥内容复制到GitLab中,之后就可以将项目仓库克隆到本地了。

3. 可以下载开源的可视化版本控制工具SourceTree,帮助版本管理。

Cocoapods相关

4. 更新Ruby

这一步还挺重要的,之前使用默认的Ruby版本,导致在下载安装依赖库环节一直报错,后续卸载Cocoapods、更新Ruby版本、重装Cocoapods才解决。使用Homebrew来安装新版Ruby:

Brew install ruby

安装完成后查看Ruby版本:

ruby -v

可能会出现两个版本,一个是Homebrew安装的新版,另一个是系统自带的旧版,Homebrew会提示按路径切换版本。当时执行的命令如下:

echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

之后验证下是否切换到新版Ruby即可:

ruby -v

5. 安装Cocoapods

Cocoapods是专为iOS和macOS开发而设计的依赖库管理工具。可以先查看电脑有没有安装Cocoapods:

pod --version

如果提示没有找到名为pod的命令,则需要安装Cocoapods,安装指定版本(如1.10.2版本)的Cocoapods的命令为:

sudo gem install cocoapods -v 1.10.2

如果已有的Cocoapods不是想要的版本,则需要先卸载再安装指定版本的Cocoapods,卸载命令如下:

sudo gem install cocoapods

再根据提示输入Yes卸载对应的版本。

6. 安装Cocoapods相关组件

阅读项目中的Podfile文件,开头会有需要的组件名称,逐个安装即可。

sudo gem install cocoapods-binary
sudo gem install cocoapods-pod-sign

7. 安装依赖库并更新本地的Pod仓库

在终端执行命令:

pod install --repo-update

如果出现报错,首先检查是否更新了自己的ruby版本,见第4步;如果提示缺少必要Cocoapods组件,则按照第6步安装。

8. 一些问题及解决办法

<1> 报错:

[!] `PromisesObjC` requires CocoaPods version `>= 1.12.0`, which is not satisfied by your current version, `1.10.2`.

解决办法:

之前成功pod install --repo-update之后,调试过程中删除了一些依赖库,再执行pod install --repo-update时报了这个错误。如果要保持Cocoapods版本不变,则重新从git上拉代码进行覆盖,再安装依赖库即可。

<2> 警告:

[!] Found multiple specifications for `***`:
-/Users/***/.cocoapods/repos/cocoapods/***/***.podspec.json
-/Users/***/.cocoapods/repos/garena-shopee-ios-shopee-specs-library/***/***.podspec

解决办法:

该警告表示CocoaPods本地仓库中存在多个相同版本的podspec文件。删除多余的仓库即可解决,例如在这里执行:

pod repo remove cocoapods

<3> 警告:

[!] The '*** [Debug]' target overrides the 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES' build setting defined in `***.release.xcconfig'. This can lead to problems with the CocoaPods installation


[!] The '*** [Release]' target overrides the 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES' build setting defined in `***.release.xcconfig'. This can lead to problems with the CocoaPods installation

解决办法:

这些警告表明Target配置覆盖了 CocoaPods 生成的 xcconfig 文件中的 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 设置,可能会有潜在问题。可以在Xcode中使用 $(inherited) 标志来继承 CocoaPods 的配置。

在Xcode中的具体方法为:选择项目文件->选择TARGETS中的目标->Build Settings->搜索Always Embed Swift Standard Libraries->在Debug和Release配置中,将当前值改为 $(inherited)。

<4> 有些情况下,清除Cocoapods的缓存是有用的:

pod cache clean -all

Xcode相关

9. 运行项目(在模拟器上)

<1> 报错:

/Users/*** 'Masonry/Masonry.h' file not found
in file included from <built-in>:1:

解决办法:

这个报错表示库文件没有正确安装或集成到项目中。解决方法是先在电脑中搜索到该.h文件,之后将文件路径加入到Xcode的搜索路径中。

具体为:选择项目文件->选择TARGETS中的目标->Build Settings->Search Paths->将Always Search User Paths (Deprecated)置为Yes->将路径添加到User Header Search Paths。

<2> 报错:

报大量类似错误,例如其中一个为:

Multiple commands produce '/Users/***/Library/Developer/Xcode/DerivedData/***.h'
Target '***' (project 'Pods') has copy command from '/Users/***.h' to '/Users/***.h'
Target '***' (project 'Pods') has copy command from '/Users/***.h' to '/Users/***.h'
Target '***' (project 'Pods') has copy command from '/Users/***.h' to '/Users/***.h'

解决办法:

这是由于多个构建操作试图生成或复制相同的文件导致的,这里多个路径指向同一个目标文件,从而产生冲突。需要删除多余的路径。

具体为:在项目资源管理器中选择Pods->选择TARGETS中出现问题的目标->Build Phases->Compile Sources->删除所有多余的同名文件。

<3> 报错:

SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a'; try increasing the minimum deployment target

解决办法:

这是Xcode版本和项目最低部署目标(Minimum Development Target)之间不兼容导致的,可以通过增加最低部署目标解决,这里都设置为iOS 10.0。

具体为:在项目资源管理器中选择Pods->选择TARGETS中所有目标->Build Settings->Deployment->iOS Deployment Target->Other..->输入10.0(注意不是输入iOS 10.0)。

<4> 报错:

Building for 'iOS-simulator', but linking in object file (/Users/gaozhangchi/Codes/SSZVideoUploadFramework/SSZVideoUploadFramework/Classes/Tencent/COSSDK/libmtasdk.a[arm64]2) built for 'iOS'
Linker command failed with exit code 1 (use -v to see invocation)

解决办法:

(模拟器debug运行或直接打包不会报这个错)

报错原因是在Xcode12之后,苹果废除了32位应用,而所运行项目SDK还是32位。具体解决办法为:选择项目文件->选择TARGETS中的目标->Build Settings->Architectures->设置Build Active Architecture Only为No;在Excluded Architectures项添加上arm64。

⚠️值得注意的是,使用这个方法后,真机测试时又会报错...因此总结如下:

1️⃣模拟器Release模式:设置Build Active Architecture Only为No;在Excluded Architectures项添加上arm64;

2️⃣模拟器Debugu模式、真机测试、打包上架:还原Build Active Architecture Only为Yes;删除Excluded Architectures项后面的arm64。

<5> 报错:

Unsupport Swift architecture
while building module '***' imported from /Users/***.m:2

解决办法:

报错原因是某些Swift模块不支持当前构建架构,通过在Rosetta下运行可以解决。设置Rosetta的具体方法为:Product(顶部菜单栏)->Destination->选择Show All Run Destinations->在下方iOS Simulators里选择带(Rosetta)的模拟器。

<6> 有些情况下,清理Xcode的Build folder和Derived Data会解决一些奇怪的问题...

清理Build Folder的方法:Product(顶部菜单栏)->Clean Build Folder…。

清理Derived Data的方法:Xcode(顶部菜单栏)->Settings…->Locations->Locations->Derived Data下方路径右边的箭头,即会在访达中显示Derived Data文件夹->关闭Xcode->删除Derived Data文件夹下的所有内容。

10. 真机测试

步骤:

1️⃣打开iPhone->设置->隐私与安全性->安全性->将开发者模式打开;

2️⃣打开Xcode->Xcode(顶部菜单栏)->Accounts->添加自己的Apple ID;

3️⃣打开Xcode->用数据线将iPhone连接至电脑,双端都选择信任即可。

<1> iPhone提示“不受信任的开发者”

解决办法:打开iPhone->设置->通用->VPN与设备管理->配置描述文件,选择信任即可

<2> 报错:

iPhone is not available because it is unpaired,Pair with the device in the Xcode Devices Window, and respond to any pairing prompts on the device.

解决办法:

报错原因是没能正常配对。首先退出Xcode,断开iPhone连接;再在终端执行sudo pkill usbmuxd;最后重新打开Xcode,连接iPhone,一般就可以解决。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值