复制并重命名Xcode项目及相关文件夹

206

我希望能够复制整个Xcode项目,重命名项目和相关文件,而不会让Xcode出现问题,并且不必手动重新导入所有文件到项目中。

9个回答

392

本回答是将各种其他StackOverflow帖子和互联网教程汇总到一个地方以供我日后参考,并帮助任何可能面临相同问题的人。所有其他答案在结尾处给出信用。

复制Xcode项目

  1. 在Finder中,将项目文件夹复制到新项目所需位置。此阶段不要重命名 .xcodeproj 文件名称或任何关联文件夹。

  2. 在Xcode中,重命名项目。从导航器窗格(左窗格)中选择您的项目。在实用程序窗格(右窗格)中重命名您的项目,接受Xcode建议的更改。

  3. 在Xcode中,在“管理方案”中重命名计划,还要重命名任何目标。

  4. 如果您没有使用包含当前 PRODUCT_NAME 结尾的默认Bundle Identifier(因此会自动更新),则将您的Bundle Identifier更改为您将用于复制的新项目。

重命名源文件夹

因此,在按照上述步骤操作后,您应该有一个重复命名的Xcode项目,可以成功构建和编译,但源代码文件夹仍将以原始项目中的名称命名。这不会导致任何编译器问题,但对于人们在SCM等中浏览的最清晰的文件结构。要重命名此文件夹而不会破坏所有文件链接,请按照以下步骤操作:

  1. 在Finder中,重命名源文件夹。这将使您的项目出现故障,因为Xcode不会自动检测更改。您的所有Xcode文件列表都将失去与实际文件的链接,因此将全部变为红色。注意:您可能需要首先执行第2步,然后再返回此步骤。

  2. 在Xcode中,单击您重命名的虚拟文件夹(这很可能就在您实际的.xcodeproject正下方),将其重命名为与Finder中的名称匹配。这不会修复任何问题,严格来说也不是必需的步骤,但文件名匹配起来很好。

  3. 在Xcode中,选择您刚刚在导航窗格中重命名的文件夹。然后,在实用程序窗格(最右边)中单击看起来像深灰色文件夹的图标,就在“位置”下拉菜单的下面。从这里,导航到Finder中的重命名文件夹,然后单击“选择”。这将自动重新关联所有文件,它们应该不再在Xcode导航窗格中显示为红色。

要单击的图标

  1. 在项目/目标构建设置中搜索旧文件夹名称并手动重命名找到的任何出现。通常有一个prefix.pch和一个Info.plist,但可能还有更多。

  2. 如果您正在使用任何第三方库(Testflight/Hockeyapp等),您还需要搜索“ Library Search Paths”并在此处重命名旧文件名的任何出现。

  3. 对于您的项目可能包含的任何单元测试源代码文件夹,请重复此过程,该过程相同。

这应该允许您复制和重命名Xcode项目以及所有相关文件,而无需手动编辑任何Xcode文件,并冒着弄乱事情的风险。

荣誉

非常感谢Nick LockwoodPauly Glott为解决此问题提供了单独的答案。


3
跟着上述步骤后,我在整个项目中搜索了“旧名称”,找到需要更改的内容(前缀头文件),并使用“新名称”编译通过了。这是一个非常好的教程 —— 正是我所需要的。(已在 Xcode 5.0.1 / iOS 7.0 中测试过) - Mac
2
作为一种好奇心,这是一种有点老派的方法... https://dev59.com/fWkw5IYBdhLWcg3wSogs(丹尼尔的答案) - Fattie
1
要更改应用程序的名称,您需要转到info.plist并在“bundle display name”中编写所需的名称。 - AlvaroSantisteban
1
Xcode 7.1.1 在我第一个障碍处崩溃了 - 重命名项目。我会进行调查,但是有其他人也遇到这个问题吗? - HughHughTeotl
6
项目中涉及Cocoapods整合时如何处理还未提及。我发现了一个有用的链接,可以处理这方面的问题:https://h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project/ - K.K
显示剩余21条评论

33

我发布这篇文章是因为在 XCode 中重命名项目时一直很困难。

重命名项目很好,也很简单,但是这并不会将源文件夹的名称改变。下面是我所做的步骤,可以在Xcode 4和5中完美运行,感谢以下链接的帮助。

参考链接:
重命名项目。
重命名源文件夹和其他文件。

1- 备份你的项目。

如果您使用的是Git,请提交任何更改,在进行任何更改之前复制整个项目文件夹并通过时间机器进行备份(这一步不是必需的,但我强烈推荐)。

2- 打开你的项目。

3- 在 Project 名称(蓝色顶部图标)上缓慢双击或按 Enter 并将其重命名为您喜欢的任何名称。

注意:在重命名项目后按“enter”键,它会建议自动更改所有与项目名称相关的条目,并允许您取消选择其中的一些。选择所有条目并单击“确定”。

4- 重命名 Scheme

a) 单击停止按钮旁边的菜单,然后选择 Manage Schemes。

b) 单击旧名称方案上的单击或按Enter,并将其重命名为您喜欢的任何名称。

c) 点击确定。

5 - 构建并运行以确保它有效。

注:此时,除创建项目时创建的类中的注释和源文件夹外,所有重要的项目文件都应该被重命名。接下来,我们将在文件系统中重命名文件夹。

6- 关闭项目。

7- 重命名主文件夹和源文件夹。

8- 右键单击项目束.xcodeproj文件,从上下文菜单中选择“显示包内容”,然后使用任何文本编辑器打开.pbxproj文件。

9- 搜索并替换所有原始文件夹名称出现的位置为新文件夹名称。

10- 保存文件。

11- 打开XCode项目,进行测试。

12- 完成。

编辑 10/11/19:

有一个工具可以在Xcode中重命名项目,我还没有试过它,无法发表评论。 https://github.com/appculture/xcode-project-renamer


2
这个问题是关于复制并重命名已复制项目的。而这个答案只是针对重命名一个现有项目。 - martinjbaker
1
对我来说,这是最简单的方法。只需将原始项目文件夹(例如MyProject)递归地复制到“MyNewProject”中。然后打开MyNewProject并按照fs_tigre的说明进行操作。我很惊讶Android Studio和Xcode都没有提供“文件->克隆项目”选项,这将非常方便。也许这对某人来说是一个不错的插件项目(http://nshipster.com/xcode-plugins/)? - Blisterpeanuts
仅有的适用于我的方法 - XCode 8.2 - GreenAsJade
2
步骤10.1 - 如果您有桥接标头或/和权限文件,请将它们重命名以反映您的新名称。如果使用Cocoapods,请在您的pod文件中编辑名称。 - David Lari

6

2
这仅适用于重命名应用程序的内部,但外部应用程序文件夹保持不变。 - smac89
xCode 11 链接:https://help.apple.com/xcode/mac/11.4/#/dev3db3afe4f - Atara

2
我在重命名iOS项目后使用了这个脚本。它有助于更改目录名称并使名称同步。

http://github.com/ytbryan/rename

注意:您需要手动更改方案的名称。

2
我正在使用简单的BASH脚本进行重命名。
用法:./rename.sh 旧名称 新名称
#!/bin/sh

OLDNAME=$1
NEWNAME=$2

export LC_CTYPE=C 
export LANG=C
find . -type f ! -path ".*/.*" -exec sed -i '' -e "s/${OLDNAME}/${NEWNAME}/g" {} +

mv "${OLDNAME}.xcodeproj" "${NEWNAME}.xcodeproj"
mv "${OLDNAME}" "${NEWNAME}"

注:

  1. 此脚本将忽略所有类似于 .git.DS_Store 的文件
  2. 如果旧名称/新名称包含空格,则无法使用
  3. 如果使用了pods,可能无法正常工作(未经过测试)
  4. 方案名称不会更改(无论如何,项目仍可正常运行和编译)

2021年,Big Sur 11.6。Xcode 13.0 beta 5。运行得非常顺畅。 - Chus

1
"iOS即时OpenCV"的示例代码中,我发现了一个bash脚本,它将项目从一个文件夹复制到另一个文件夹。
经过一些研究,我找到了一个博客文章,似乎是脚本的原始作者:http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html,您可以从中下载脚本。我尝试了一下,像这样从终端运行它
    sh renameXcodeProject.sh <name-of-existing-folder> <name-of-folder-to-create>   

运行正常。
可以通过文本编辑器打开文件查看其他信息。希望这有所帮助。


0

还有一件事要尝试!

当我复制了所有文件,打开项目并重命名后,除了测试目标之外,一切都变成了我的新项目名称。我收到了一个链接器错误,说我缺少一个名为“myOldProjectname.app”的文件。以下是解决方法:

  1. 点击您的项目设置并选择您的测试目标 enter image description here

  2. 点击构建设置并搜索“test host” enter image description here

  3. 检查这两个文件路径。很可能这两个路径仍然指向您的旧项目名称。 enter image description here

希望能帮到您!


0

对于其他在复制项目后遇到故事板崩溃问题的人,请前往“Identity Inspector”下的Main.storyboard。

接下来,检查当前模块是否为正确重命名的模块,而不是旧的模块。


0

我使用 Xcode 6+,只需执行以下操作:

  • 将项目文件夹中的所有文件复制到新文件夹中(带有新名称)。
  • 打开 *.xcodeproj 或 *.xcworkspace
  • 更改项目名称。
  • 单击架构并删除当前方案,然后添加新方案。

完成后,但是 Xcode 窗口和 *.xcodeproj 或 *.xcworkspace 的名称仍为 <old-name>。然后执行以下操作:

  • pop install
  • 打开 <new name>.xcworkspace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接