我有一个名为XXX
的项目,我想将该项目重命名为YYY
。
请注意:XXX
是一个非常普遍的术语(例如“data”或简单的“project”),因此简单的正则表达式搜索和替换是不可行的,因为这可能会破坏项目配置文件。
我的当前项目目录包含以下内容:
XXX
XXXTests
XXX.xcodeproj
我想将它们分别重命名为:
YYY
YYYTests
YYY.xcodeproj
... 并在我的项目文件中反映出必要的更改。
我如何在不必手动创建和填充新项目的情况下完成这个操作?
我有一个名为XXX
的项目,我想将该项目重命名为YYY
。
请注意:XXX
是一个非常普遍的术语(例如“data”或简单的“project”),因此简单的正则表达式搜索和替换是不可行的,因为这可能会破坏项目配置文件。
我的当前项目目录包含以下内容:
XXX
XXXTests
XXX.xcodeproj
我想将它们分别重命名为:
YYY
YYYTests
YYY.xcodeproj
... 并在我的项目文件中反映出必要的更改。
我如何在不必手动创建和填充新项目的情况下完成这个操作?
注意:对于Xcode 14,2022年9月:在某些情况下,Xcode现在会自动重命名方案,当Xcode执行上述步骤1时。如果是这样,步骤2中无需进行任何操作。
git mv oldname newname
。请注意,当使用git mv old new
时,通常必须(i)完全提交所有其他更改(ii)然后才能git mv old new
(iii)提交该更改(iv)然后再进行进一步的更改。如果按照步骤i-ii-iii-iv操作,git将通过重命名来维护历史记录。}Info.plist
和Product Bundle Identifier
的字段。Info.plist
中输入了文件名,请更新它(它可能已在步骤1中自动更新)。Product Bundle Identifier
,除非它使用${PRODUCT_NAME}变量,否则请执行相同操作。在这种情况下,请在设置中搜索“product”并更新Product Name
。如果Product Name
基于${TARGET_NAME},请单击设置窗格左侧的TARGETS列表中的实际目标项进行编辑,所有相关设置将立即更新。Prefix Header
的路径也已更新为新名称。
),请用双引号(""
)括起来。Code Signing Entitlements
。相应地,还要在项目导航器中重命名实际的授权文件。(副注:在Xcode 13中,授权文件在项目导航器中具有黄色的勾号图标;如果您使用共享容器/应用组,可能已创建一个授权文件。)进一步说明。
customModule="OldName"
。(Explanation.)可以在Xcode中逐个修复它们:在文件检查器中点击视图控制器,并确保在实际故事板面板左侧的白色列上点击实际故事板。在右侧面板中点击Identity Inspector(第四个小按钮)。查看自定义类->模块字段。注意它看似以灰色显示NewName。然而(截至Xcode14.2),这是错误的。只需点击下拉菜单,并明确选择新名称即可解决。(如果您现在使用文本编辑器查看该故事板文件,则会看到已修复)。您可以选择使用纯文本编辑器将它们全部更改。git mv oldname newname
命令。这样 git 就会认为这是一次移动操作,而不是删除和添加所有文件。 - Aaron Ash除了luke-west的优秀回答外,还有以下补充:
OLD.xcworkspace
重命名为NEW.xcworkspace
。Podfile
。您应该看到一个具有OLD名称的target
条款。将其更改为NEW。OLD.podspec
文件。rm -rf Pods/
pod install
。Build Phases
选项卡。Link Binary With Libraries
下,查找libPods-OLD.a
并将其删除。在进行以下操作之前,请将当前目录切换至非Git仓库 ⚠️
/NewProjectFolder
中,且该文件夹位于您的Git仓库外部。⚠️更改.git可能会破坏您的git索引 ☠现在我们将把项目从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
添加到您的代码库中。
完成!
find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'ExampleName'
两次,主目录下的文件和文件夹会在第二次迭代中被重命名。 - Pietro Basso有一个名为Xcode项目重命名工具
的GitHub项目:
应该从Xcode项目目录的根目录内部执行,并使用两个字符串参数:$OLD_PROJECT_NAME和$NEW_PROJECT_NAME来调用。
脚本递归地遍历所有文件和目录,包括Xcode项目或工作区文件,并替换所有出现的$OLD_PROJECT_NAME字符串为$NEW_PROJECT_NAME字符串(在每个文件的名称和内容中均替换)。
在遵循 @Luke-West 和@Vaiden 的解决方案时,需要额外的说明:
此外,我不必使用 @Vaiden 的步骤3。只需在终端中运行 rm -rf Pods/
即可摆脱所有旧的Pod文件
我也不必使用 @Vaiden 的步骤9,而是只需删除 Link Binary Libraries 下的 OLD 项目命名的框架(NEWLY 命名的框架已经在那里了)
因此,更新后的步骤如下:
步骤1-重命名项目
步骤2-重命名方案
步骤3-重命名带有资产的文件夹
步骤4-重命名构建plist数据
第5步处理Podfile
pod deintegrate
成功完成所有步骤后,您应该能够无错误地构建。
rm-rf Pods/
命令,而是可以更干净的运行 pod deintegrate
命令,该命令会从你的 Xcode 项目中彻底移除 CocoaPods 的所有痕迹,但会保留你的 Podfile 文件。 - jklapwykpod deintegrate
作为 rm -rf Pods
更安全的替代方案。只有一个空格之差,就可能引发灾难。 - DBrown如何更改项目名称:
在项目导航器中选择您的项目。
在文件检查器中的“标识和类型”部分,将新名称输入到“名称”字段中。
按下 Return 键。
会显示一个对话框,其中列出了可以重命名的项目。该对话框包括更改后这些项目的预览。
要选择性地重命名项目,请禁用您不想重命名的任何项目的复选框。要仅重命名您的应用程序,请保留应用程序并取消选择所有其他项目。
按下“重命名”按钮
补充Luke West的答案。如果你有任何权限: