如何完全重命名 Xcode 项目(即包含文件夹)?

How do I completely rename an Xcode project (i.e. inclusive of folders)?

我有一个名为 XXX 的项目。我想将此项目重命名为 YYY.

请注意,XXX 是一个非常常见的术语(例如“数据”或简称“项目”),因此不可能进行简单的 RegEx 搜索和替换,因为存在损坏风险项目配置文件。

我当前的项目目录包含以下项目:

我想将它们重命名为:

...分别,必要的更改反映在我的项目文件中。

如何在无需手动创建和填充新项目的情况下完成此操作?

第 1 步 - 重命名项目

  1. 在 Xcode window.
  2. 左侧面板的“项目导航器”中单击要重命名的项目
  3. 在右侧面板中,select“文件检查器”和您的项目名称应位于“标识和类型”下。将其更改为您的新名称。
  4. 当对话框询问是否重命名时 项目的内容项,单击“重命名”。对任何关于未提交更改的警告说“是”。

第 2 步 - 重命名方案

  1. 在 window 的顶部中间,活动 device/simulator 的左侧,有一个旧名称下的产品方案;单击并按住它,然后选择“管理方案...”。
  2. 单击方案中的旧名称(类似于Xcode中的重命名文件),它将变为可编辑;更改名称并单击“关闭”。

第 3 步 - 用您的资产重命名文件夹

  1. 退出 Xcode。重命名包含所有项目文件的主文件夹。
  2. 在正确命名的 master 文件夹中,在您新命名的 .xcodeproj 文件旁边,可能有一个包含您的源文件的错误命名的 OLD 文件夹。将 OLD 文件夹重命名为您的新名称(如果您使用 Git,您可以 运行 git mv oldname newname 更改名称,以便 Git 识别这是一个移动,而不是 deleting/adding 个新文件)。
  3. 重新打开 Xcode 中的项目。如果您看到警告“旧文件夹不存在”,请关闭该警告。重命名文件夹中的源文件将具有红色名称,因为它们的路径已损坏。
  4. 在左侧面板的“项目导航器”中,单击代表您重命名的旧文件夹的顶级文件夹。
  5. 在右侧面板的“身份和类型”下,将“名称”字段从旧名称更改为新名称。
  6. 该字段的正下方是“位置”菜单。如果完整路径没有自行更正,请单击附近的文件夹图标并选择重命名的文件夹。如果每个源文件的链接仍然断开,您可能必须对每个源文件执行此修复。

第 4 步 - 重命名构建 plist 数据

  1. 在左侧的“项目导航器”中单击项目,然后在主面板中select“构建设置”。
  2. 在设置中搜索“plist”。
  3. 在打包部分,您将看到 Info.plistProduct Bundle Identifier 的字段。
  4. 如果在Info.plist中输入了文件名,请更新它(它可能已在步骤 1 中自动更新)。
  5. Product Bundle Identifier 执行相同的操作,除非它使用 ${PRODUCT_NAME} 变量。在这种情况下,请在设置中搜索“产品”并更新 Product Name。如果Product Name是基于${TARGET_NAME},点击设置面板左侧TARGETS列表中的实际目标项进行编辑,所有相关设置会立即更新。
  6. 搜索“前缀”的设置并确保 Prefix Header 的路径也更新为新名称。
  7. 如果您使用 SwiftUI,请搜索“开发资产”并更新路径。如果路径包含 space ( ).
  8. ,请用双引号 ("") 括起来

第 5 步 - 重复第 3 步进行测试(如果有)

第 6 步 - 如果核心数据的名称与项目名称匹配(如果有),则对核心数据重复第 3 步

第 7 步 - 清理并重建项目

  1. 命令 + Shift + K 清理
  2. 命令 + B 构建

添加到luke-west's excellent answer

使用 CocoaPods 时

第 2 步之后:

  1. 退出 Xcode.
  2. 在 master 文件夹中,将 OLD.xcworkspace 重命名为 NEW.xcworkspace

第 4 步后:

  1. In Xcode:从项目导航器中选择并编辑 Podfile。您应该会看到带有旧名称的 target 子句。将其更改为新的。
  2. 退出 Xcode.
  3. 在项目文件夹中,删除 OLD.podspec 文件。
  4. rm -rf Pods/
  5. 运行 pod install.
  6. 打开Xcode。
  7. 在项目导航器中单击您的项目名称。
  8. 在主窗格中,切换到 Build Phases 选项卡。
  9. Link Binary With Libraries下,寻找libPods-OLD.a并删除 它。
  10. 如果您有 objective-c 桥接 header,请转到构建设置并将 header 的位置从 OLD/OLD-Bridging-Header.h 更改为 NEW/NEW-Bridging-Header。 h
  11. 清洁 运行.

更改项目名称;

  1. Select 您在项目导航器中的项目。

  2. 在文件检查器的身份和类型部分,在名称字段中输入新名称。

  3. Return

    将显示一个对话框,列出您的项目中可以重命名的项目。该对话框包含更改后项目显示方式的预览。

  4. 要有选择地重命名项目,请禁用您不想重命名的任何项目的复选框。要仅重命名您的应用,请选择该应用并取消选择所有其他项目。

  5. 按“重命名”

使用 shell 命令的更快解决方案(也适用于 CocoaPods):

在继续之前请cd到一个非Git仓库⚠️

第 1 步 - 先决条件

  1. 将您的原始项目文件夹复制到临时 /NewProjectFolder 外部 您的 Git存储库。 ⚠️ 更改为 .git 可能会破坏您的 git 索引

第 2 步 - 打开终端

现在我们要将项目从 oldName 重命名为 NewProject

  • 关闭 Xcode.

  • 转到您的/NewProjectFolder

      cd /Path/to/your/NewProjectFolder
    
  • 安装所需的额外工具。

      brew install rename ack
    
  • 重命名包含源字符串的文件和目录。 你需要运行这个命令两次,因为目录会先重命名,然后其中的文件和目录将在下一次迭代中重命名。

      find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'NewProject'
    
  • 检查是否所有包含源字符串的文件都已重命名。您应该看到空输出。

      find . -name 'oldName*'
    
  • 替换所有文件中所有出现的字符串。

      ack --literal --files-with-matches 'oldName' --print0 | xargs -0 sed -i '' 's/oldName/NewProject/g'
    
  • 检查是否替换了所有文件中所有出现的字符串。您应该看到空输出。

      ack --literal 'oldName'
    
  • 运行 pod install

  • NewProjectFolder 添加到您的存储库。

  • 大功告成!

遵循@Luke-West+@Vaiden 的解决方案时的额外说明:

  • 如果你的方案没有改变(仍然显示我的mac)在左上角的停止按钮旁边:
  1. 单击新创建的项目名称(在停止按钮旁边)> 单击编辑方案> 构建(左侧)> 删除旧目标(会说它丢失)并替换为新命名的项目徽标下的新命名项目

此外,我不必使用@Vaiden 解决方案的第 3 步。只是 运行ning rm -rf Pods/ 在终端中删除了所有旧的 pod 文件

我也不必使用@Vaiden 解决方案中的第 9 步,相反,我只是删除了 Link 二进制库下名为 framework 的旧项目(新命名的框架已经存在)

所以更新后的步骤如下:

步骤 1 - 重命名项目

  1. 如果您在项目中使用 cocoapods,请关闭工作区,然后打开 XCode 项目以执行这些步骤。
  2. 在 Xcode 视图左侧的“项目导航器”中单击要重命名的项目。
  3. 在右侧select“文件检查器”和您的项目名称应该在“身份和类型”下,将其更改为新名称。
  4. 点击下拉菜单中的“重命名”

步骤 2 - 重命名方案

  1. 在顶部栏(“停止”按钮附近),有一个适用于您的旧产品的方案,单击它,然后转到“管理方案”
  2. 点击scheme中的OLD名字,会变成可编辑的,改名字
  3. 退出 XCode.
  4. 在 master 文件夹中,将 OLD.xcworkspace 重命名为 NEW.xcworkspace。

第 3 步 - 用您的资产重命名文件夹

  1. 退出Xcode
  2. 在正确命名的 master 文件夹中,有一个新命名的 xcodeproj 文件和错误命名的 OLD 文件夹。将旧文件夹重命名为您的新名称
  3. 重新打开项目,您将看到警告:“文件夹 OLD 不存在”,关闭警告
  4. 在左侧的“项目导航器”中,单击顶级 OLD 文件夹名称
  5. 在“身份和类型”下的“实用程序”窗格中,您将看到“名称”条目,将其从旧名称更改为新名称
  6. 正下方有一个“位置”条目。单击具有旧名称的文件夹并选择新重命名的文件夹

步骤 4 - 重命名构建 plist 数据

  1. 点击左侧“项目导航器”中的项目,在主面板中select“构建设置”
  2. 在此部分搜索“plist” 在包装下,您会看到 Info.plist 和产品包标识符
  3. 重命名 Info.plist
  4. 中的顶部条目
  5. 对产品标识符执行相同的操作

步骤 5 处理 Podfile

  1. 在 XCode 中:从项目导航器中选择并编辑 Podfile。您应该会看到一个带有旧名称的目标子句。将其更改为新的。
  2. 退出 XCode.
  3. 在终端中,cd 进入项目目录,然后:pod deintegrate
  4. 运行 pod 安装。
  5. 打开XCode.
  6. 在项目导航器中单击您的项目名称。
  7. 在主窗格中,切换到“构建阶段”选项卡。 在 Link Binary With Libraries 下,查找旧框架并将其删除(应该说它丢失了)新命名的框架应该已经存在,如果没有使用 [=136 底部的“+”按钮=] 添加它
  8. 如果您有 objective-c 桥接 header,请转到构建设置并将 header 的位置从 OLD/OLD-Bridging-Header.h 更改为 NEW/NEW-Bridging-Header。 h
  9. 清洁 运行。

成功执行所有步骤后,您应该能够正确构建

有一个名为 Xcode Project Renamer 的 GitHub 项目:

It should be executed from inside root of Xcode project directory and called with two string parameters: $OLD_PROJECT_NAME & $NEW_PROJECT_NAME

Script goes through all the files and directories recursively, including Xcode project or workspace file and replaces all occurrences of $OLD_PROJECT_NAME string with $NEW_PROJECT_NAME string (both in each file's name and content).

别忘了备份你的项目!

Xcode Project Renamer

除了 Luke 和 Vaiden 推荐的所有步骤外,我还必须重命名故事板中的所有 customModule 属性以匹配新名称,并且必须区分大小写。

Xcode 11.0+.

现在真的很简单。只需转至 Project Navigator,Xcode window 的左侧面板。 按 Enter 激活重命名,就像更改文件夹名称一样。

只需在这里更改新名称,Xcode会要求您重命名其他内容。

.

在此处点击重命名,您就完成了。

如果您对根文件夹名称感到困惑,比如为什么它没有更改,那么它只是一个文件夹。它只是用一个新名称重命名它。

添加到 Luke West 接受的答案中。如果您有任何权利:

  1. 关闭Xcode
  2. 更改授权文件名
  3. 进入 Xcode,select 权利文件应以红色突出显示,在文件检查器中 select 文件夹图标和 select 您重命名的文件。
  4. 进入构建设置,搜索“权利”并更新权利的文件夹名称和文件名。
  5. 清理并重建

另一件我认为尚未注意到的事情是,如果您在 AppDelegate 文件(或其他任何地方)中使用 CoreData 对象和惰性 persistentContainer,您可能会得到一个错误说 NSManagedObjectContext 是 nil(或类似的东西)。更改任何 NSPersistentContainer 的名称以使用新的应用程序名称。那应该可以解决问题!如果没有,根据 this old SO post 解决方案是删除旧的 .xcdatamodeld 文件并创建一个新文件,再次添加所有实体。

我发现在网上找到的几个简单步骤很有用:

  1. 在 Finder 中更改项目的文件夹名称
  2. 在 Xcode navigator/show 文件中打开 project/select 项目文件 inspector/under 根据您的 preference/Enter/wait 几秒钟,身份和类型更改名称直到 pop-up window appears/click rename/again 等待几秒钟 - 不要按 OK/
  3. select 项目文件下的文件夹 Xcode navigator/show 文件 inspector/under Identity and Type 根据您的 preference/Enter/wait 几秒钟更改名称Xcode nagivator 中的项目文件更改了名称
  4. 在 Xcode 项目状态栏中单击项目名称(将鼠标悬停在行首时会出现)/选择管理方案...直到“自动创建方案” window 显示 up/2x点击方案下的项目名称column/enter/close“自动创建方案”window
  5. select Xcode navigator/inXcode 编辑器中的项目文件 ~ 界面构建器区域选择选项卡“Build setting”/在过滤器中键入您之前的名称 project/click enter/in 项目的前一个名称出现在根目录中的行 - 只需将其更改为新名称
  6. voala 就是这样