复制并重命名Xcode项目和关联的文件夹[关闭]


Answers:


368

这个答案是互联网上其他各种StackOverflow帖子和教程的最终成果,这些帖子和教程被集中在一个地方,供我将来参考,并帮助可能遇到相同问题的其他任何人。最后,将对所有其他答案给予所有功劳。

复制一个Xcode项目

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

  • 在Xcode中,重命名项目。从导航器窗格(左窗格)中选择项目。在“实用工具”窗格(右窗格)中重命名您的项目,接受Xcode建议的更改。

  • 在Xcode中,重命名“管理方案”中的方案,还重命名您可能拥有的任何目标。

  • 如果您未使用默认的捆绑包标识符,该标识符在末尾包含当前PRODUCT_NAME(因此将自动更新),则将捆绑包标识符更改为将用于重复项目的新标识符。

重命名源文件夹

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

  • 在Finder中,重命名源文件夹。这将破坏您的项目,因为Xcode不会自动检测到更改。您所有的xcode文件列表都将失去与实际文件的链接,因此都将变为红色。

  • 在Xcode中,单击您重命名的虚拟文件夹(这可能会在顶部,在您实际的.xcodeproject下)重命名此名称以与Finder中的名称匹配,这将无法解决任何问题,并且严格来说不是必需的步骤,但是文件名匹配非常好。

  • 在Xcode中,在导航窗格中选择刚重命名的文件夹。然后在“实用工具”窗格(最右侧)中,单击“位置”下拉菜单下方的看起来像深灰色文件夹的图标。从这里,导航到查找器中已重命名的文件夹,然后单击“选择”。这将自动重新关联您的所有文件,并且它们在Xcode导航窗格中不应再显示为红色。

单击图标

  • 在项目/目标构建设置中,搜索旧的文件夹名称,然后手动重命名找到的所有匹配项。通常,对于prefix.pch有一个,对于info.plist有一个,但是可能还有更多。

  • 如果您正在使用任何第三方库(Testflight / Hockeyapp / etc),则还需要搜索“库搜索路径”,并在此处也重命名任何出现的旧文件名。

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

这应该允许您复制并重命名xcode项目和所有相关文件,而不必手动编辑任何xcode文件,并且可能会弄乱事情。

学分

非常感谢Nick LockwoodPauly Glott为这个问题提供了单独的答案。


3
按照上述步骤操作后,我只是在Hole项目中搜索了“旧名称”,并找到了需要更改的内容(前缀标头),并使用“新名称”和其他位置进行了编译。很棒的教程-正是我所需要的。(经过Xcode 5.0.1 / iOS 7.0测试)
Mac

这似乎并不能完全解决问题(在Xcode 5.0.2上,项目从4.6.3迁移到5.0.0)。*.xcodeproj/project.pbxproj文件中包含原始文件夹路径的很多东西。特别是,构建失败了,因为它一直在原始文件夹中寻找info.plist。
史蒂文·卢

2
出于好奇,这是一种古老的方法... stackoverflow.com/questions/10006482/…(丹尼尔的回答)
Fattie 2013年

1
Xcode 7.1.1在我遇到第一个障碍时便崩溃了-重命名该项目。会调查,但是其他人找到了吗?
HughHughTeotl 2015年

5
当您将Cocoapods集成到项目中时,缺少处理方法。我也找到了一个有用的链接来处理该问题:h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK

30

我发布此邮件是因为在命名项目时,我一直都很努力XCode

重命名项目既好又简单,但这不会重命名源文件夹。这一步一步地介绍了我所做的工作,这些工作在Xcode 4和5中非常有效,这要归功于下面的链接。

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

1-备份您的项目。

如果您使用的是git,请进行所有更改,在进行任何更改之前制作整个项目文件夹的副本并在时间机器中进行备份(此步骤不是必需的,但我强烈建议这样做)。

2-打开您的项目。

3-慢速双击或按一下项目名称(蓝色顶部图标)上的Enter,然后将其重命名为您喜欢的名称。

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

4-重命名方案

a)单击停止按钮旁边的菜单,然后选择管理方案。

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都没有提供“ File-> Clone Project”选项,该选项如此方便。也许对某人来说是一个不错的插件项目(nshipster.com/xcode-plugins)?
Blisterpeanuts

唯一对我
有用的方法-XCode

2
步骤10.1-如果您具有桥接头文件和/或权利文件,请重命名这些文件以反映您的新名称。如果使用Cocoapods,请在您的Pod文件中编辑名称。
戴维·拉里



1

“ Instant OpenCV for iOS”一书的示例代码中,我找到了一个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

我使用Xcode 6+,我只是这样做:

  • 将项目文件夹中的所有文件复制到新文件夹(使用新名称)。
  • 打开 *.xcodeproj or *.xcworkspace
  • 更改项目名称。
  • 单击架构并删除当前的化学并添加新的化学。

到此完成,但窗口Xcode的名称*.xcodeproj or *.xcworkspace仍然为<old-name>。然后我做:

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

0

再尝试一件事!

当我复制所有文件,打开项目并将其重命名时,除了测试目标,所有内容都更改为我的新项目名称!我收到一个链接器错误,提示我缺少一个名为“ myOldProjectname.app”的文件。修复问题的方法如下:

  1. 单击您的项目设置,然后选择测试目标 在此处输入图片说明

  2. 点击构建设置并搜索“测试主机” 在此处输入图片说明

  3. 检查这两个文件路径。可能这两条路径仍指向您的旧项​​目名称。 在此处输入图片说明

希望有帮助!


0

对于复制项目后出现故事板崩溃的其他任何人,请转到Identity Inspector下的Main.storyboard。

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


0

我正在使用简单的BASH脚本进行重命名。

用法: ./rename.sh oldName newName

#!/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. 如果您使用Pod(未测试),则可能无法正常工作
  4. 方案名称将不会更改(无论如何项目都将正常运行和编译)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.