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


469

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

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

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

  • XXX
  • XXXTests
  • XXX.xcodeproj

我想将它们重命名为:

  • YYY
  • YYYTests
  • YYY.xcodeproj

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

我如何无需手动创建和填充新项目即可完成此任务?


编辑:这已经成为我最不赞成的问题,这是绝对荒谬的。



1
在这里也被要求和回答了stackoverflow.com/questions/17744319/…并以200票的高票通过
罗恩·迈舒克

1
在这里也要问和回答stackoverflow.com/questions/8262613/…以189票得票,这两个帖子在Xcode 7中仍然很重要
Ron Myschuk 2015年

如果您只想重命名应用程序图标名称,请查看此答案 stackoverflow.com/questions/238980/…–
LYu

Answers:


1019

第1步-重命名项目

  1. 在Xcode窗口左侧面板的“项目导航器”中单击要重命名的项目。
  2. 在右侧窗格中,选择“文件检查器”,然后在“标识和类型”下找到项目的名称。将其更改为您的新名称。
  3. 当对话框询问是否重命名项目的内容项时,单击“重命名”。

第2步-重命名方案

  1. 在窗口顶部,“停止”按钮旁边,有一个使用您的旧名称的产品方案。单击它,然后选择“管理方案…”。
  2. 单击方案中的旧名称,它将变为可编辑的;更改名称,然后单击“关闭”。

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

  1. 退出Xcode。
  2. 在正确命名的master文件夹中,有一个新命名的.xcodeproj文件和错误命名的OLD文件夹。将OLD文件夹重命名为新名称(如果使用Git,则可以运行git mv oldname newname以使Git识别出此操作,而不是删除/添加新文件)。
  3. 在Xcode中重新打开该项目,您将看到警告“文件夹OLD不存在”;取消警告。
  4. 在左侧面板的“项目导航器”中,单击顶级OLD文件夹。
  5. 在右侧面板的“身份和类型”下,将“名称”字段从旧名称更改为新名称。
  6. 该字段的正下方是“位置”菜单。单击附近的文件夹图标,然后选择重命名的文件夹。

步骤4-重命名Build plist数据

  1. 在左侧的“项目导航器”中单击项目,然后在主面板中选择“构建设置”。
  2. 在设置中搜索“ plist”。
  3. 在包装部分,您将看到Info.plistProduct Bundle Identifier
  4. 如果输入了名称Info.plist,请更新它。
  5. 对进行相同操作Product Bundle Identifier
  6. 如果您使用SwiftUI,请搜索“开发资产”并更新路径。

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

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

步骤7-重建专案

  1. Command+ Shift+ K清洁
  2. Command+ B建立

5
您可以更改项目的名称,但是文件夹名称仍然相同。您知道如何更改吗
Coder221'9

5
谢谢!对于Xcode 8,应手动重命名权利文件。
赵九龙,

54
在执行第3部分的第2部分(重新命名文件夹)时,如果您使用的是git,我建议git mv oldname newname,这样git将识别出这是一个动作,而不是删除和添加所有文件。
亚伦·阿什

14
完美,可以在Xcode 8.2中完美运行,如果在方案名称上单击一次却无法使其可编辑,则选择方案并单击返回键,这将使方案名称可编辑,这是在编辑方案时在此处指出的一件事。
Khurram Shehzad

5
不要忘记查找并替换旧项目名称的其他实例。
德里克·索克

194

要添加到@ luke-west的出色答案中:

使用CocoaPods时

步骤2之后:

  1. 退出XCode。
  2. 在主文件夹中,重命名OLD.xcworkspaceNEW.xcworkspace

步骤4之后:

  1. 在XCode中:Podfile从项目导航器中选择并编辑。您应该看到target带有OLD名称的子句。将其更改为NEW。
  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桥接标头,请转到“构建设置”,并将标头的位置从OLD / OLD-Bridging-Header.h更改为NEW / NEW-Bridging-Header.h
  11. 清洁并运行。

7
使用Xcode 8.3.2,我必须使用cocoapods-deintegrate并重新安装所有Pod才能使用新名称运行项目。
SteffenK

2
@SteffenK该方法与rm -rf Pods /之间有区别吗?考虑到您已完成所有其他步骤?
Vaiden

1
请详细说明一下吗?有什么痕迹?
Vaiden

2
@Vaiden非常感谢您与CocoaPods合作时的清晰度!该过程确实创建了第二个引用,这很奇怪,但是删除它后,一切运行正常!再次感谢!:)
马特·斯威夫特

4
有人可以告诉我在哪里可以找到此答案中提到的OLD.podspec文件吗?在我的项目中,我得到了一些文件,例如'Podfile'/'Podfile.lock'/'Pods.xcodeproj',我得到了一个名为'Local Podspecs'的空文件夹,但找不到.podspec文件
codeDude

51

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

cd一个非Git仓库在进行之前⚠️

步骤1-前提条件

  1. 将您的原始项目文件夹复制到/NewProjectFolder git存储库之外的临时目录中⚠️对.git的更改可能会破坏您的git索引 💥☠

第2步-打开终端

现在,我们将项目从重命名oldNameNewProject

  • 关闭XCode。
  • 去你的/NewProjectFolder
cd /Path/to/your/NewProjectFolder
  • 安装所需的额外工具。
brew install rename ack
  • 重命名包含源字符串的文件和目录。您将需要运行COMMAND TWICE,因为目录将首先重命名,然后在下一次迭代中重命名其中的文件和目录。
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到您的存储库。
  • 大功告成!

3
谢谢,我发现它很有用。当像这样复制和粘贴命令时,如果可以减少工作量,则我更喜欢这样做,因此“ YourNewAmazingProjectName”的示例名称是多余的,请使用“ example”,因为它可以延长删除键的寿命。
LpLrich

@LpLrich感谢您的建议,我已经更新了我的答案。
Pietro Basso

主文件夹已重命名,但是我没有看到其他目录或文件被重命名,有什么建议吗?
伊桑·帕克

2
@EthanParker,您需要运行find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'ExampleName'两次,主文件夹中的文件和目录将在第二次迭代中重命名。
Pietro Basso

1
我在项目中使用了coreData,我必须运行两次而不是两次。
ShadeToD

21

有一个GitHub项目,名为Xcode Project Renamer

它应该从Xcode项目目录的根目录内部执行,并用两个字符串参数调用:$ OLD_PROJECT_NAME和$ NEW_PROJECT_NAME

脚本以递归方式遍历所有文件和目录,包括Xcode项目或工作区文件,并将所有出现的$ OLD_PROJECT_NAME字符串替换为$ NEW_PROJECT_NAME字符串(每个文件的名称和内容均包含)。

不要忘记备份您的项目!

Xcode项目重命名器


这对初学者没有用,因为它破坏了我的主项目文件,也没有使用下面的命令删除脚本,我因此而浪费时间。$ rm named.swift
彼得·沃尔特

请不要追求捷径。
彼得·沃尔特

6
@ peter-walter,应始终在执行此类操作之前备份数据。
奥卡伊·埃尔塔斯(OlcayErtaş)

这就像一个魅力。唯一缺少的是您需要pod install在运行脚本之后运行。
romin21

11

XCode 11.0+。

现在真的很简单。只需转到Project NavigatorXCode窗口的左侧面板。
按下Enter使其可以重命名,就像更改文件夹名称一样。
在此处输入图片说明

只需在此处更改新名称,XCode就会要求您重命名其他内容。

在此处输入图片说明

点击Rename此处即可完成。
如果您对根文件夹名称感到困惑,为什么它没有更改,那么它只是一个文件夹。刚刚使用新名称对其进行了重命名。
在此处输入图片说明


7

更改项目名称;

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

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

3.按回车键。

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

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

  2. 按“重命名”


5

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

  • 如果您的方案未更改(仍显示在我的Mac上),则在停止按钮旁边的左上方:

    1. 单击“新创建的项目名称”(在“停止”按钮旁边)>单击“编辑方案”>“生成”(左侧)>删除旧目标(会说它丢失了),并用“新命名的项目”徽标替换为“新命名的项目”

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

我也不必使用@Vaiden解决方案中的第9步,而是只删除了Link Binary Libraries下名为OLD的旧项目(新命名的框架已经在那里)。

因此,更新的步骤如下:

第1步-重命名项目

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

第2步-重命名方案

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

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

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

步骤4-重命名Build plist数据

  1. 单击左侧“项目导航器”中的项目,在主面板中选择“构建设置”
  2. 在本节中搜索“ plist”,在包装下,您将看到Info.plist和产品捆绑包标识符
  3. 重命名Info.plist中的顶部条目
  4. 对产品标识符执行相同的操作

步骤5处理Podfile

  1. 在XCode中:从项目导航器中选择并编辑Podfile。您应该看到带有OLD名称的target子句。将其更改为NEW。
  2. 退出XCode。
  3. 在终端中,cd进入项目目录,然后: rm -rf Pods/
  4. 运行pod install。
  5. 打开XCode。
  6. 在项目导航器中单击您的项目名称。
  7. 在主窗格中,切换到“构建阶段”选项卡。在Link Binary With Libraries下,查找OLD框架并将其删除(应该说它丢失了)。如果不使用窗口底部的“ +”按钮,则应该已经有了NEWLY命名框架。
  8. 如果您有Objective-C桥接标头,请转到“构建设置”,并将标头的位置从OLD / OLD-Bridging-Header.h更改为NEW / NEW-Bridging-Header.h
  9. 清洁并运行。

成功完成所有步骤后,您应该可以没有错误地进行构建


2
对于步骤5.3,rm-rf Pods/要运行一种更清洁的方法,该方法pod deintegrate将从Xcode项目中删除所有CocoaPods痕迹,但使Podfile保持完整。
jklapwyk

这个规则。它为我将Ionic应用程序与现有iOS应用程序合并提供了基础。
t4l

2

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


1
唯一提及此事的人!
Fattie

1
注意,您可以在“界面构建器”中执行此操作,只需在字段上单击“重新单击”即可。然后,它将正确“重新默认”为您的新项目名称。
Fattie
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.