How do I completely rename an Xcode project (i.e. inclusive of folders)?
我有一个项目叫XXX。我想把这个项目改名为YYY。
请注意,XXX是一个非常常见的术语(例如"数据"或简单的"项目"),因此不可能进行简单的regex搜索和替换,因为这样会损坏项目配置文件。
我当前的项目目录包含以下项目:
- XXX
- XXXTests
- XXX.xcodeproj
我想将它们重命名为:
- YYY
- YYYTests
- YYY.xcodeproj
…分别在我的项目文件中反映出必要的更改。
如何在不需要手动创建和填充新项目的情况下完成此任务?
编辑:这已经成为我最赞成的问题,真是太荒谬了:p
- 重命名xcode项目的可能副本
- 这里也有人提问和回答stackoverflow.com/questions/17744319/…,在答案上有200张以上的选票。
- 这里还有问题和答案stackoverflow.com/questions/8262613/…加上189张选票,这两个帖子在xcode 7中仍然是相关的。
- 如果您只想重命名应用程序图标名,请检查此答案stackoverflow.com/questions/238980/…
步骤1-重命名项目
在xcode视图左侧的"项目导航器"中单击要重命名的项目。
在右侧选择"文件检查器",项目名称应在"标识和类型"下,将其更改为新名称。
在下拉菜单中单击"重命名"
步骤2-重命名方案
在顶栏(靠近"停止"按钮)中,有一个旧产品的方案,单击它,然后转到"管理方案"。
单击方案中的旧名称,它将变为可编辑的,更改名称
步骤3-使用您的资产重命名文件夹
退出XCODE
在正确命名的主文件夹中,有一个新命名的xcodeproj文件,其中包含错误命名的旧文件夹。将旧文件夹重命名为新名称
重新打开项目,您将看到一条警告:"旧文件夹不存在",取消该警告。
在左侧的"项目导航器"中,单击顶层的旧文件夹名称。
在实用程序窗格的"标识和类型"下,您将看到"名称"条目,将其从旧名称更改为新名称。
下面有一个"位置"条目。单击具有旧名称的文件夹并选择新重命名的文件夹
步骤4-重命名构建plist数据**
在左侧的"项目导航器"中单击项目,在主面板中选择"构建设置"。
在本节中搜索"plist"
在包装下,您会看到Info.plist和Product bundle identifier。
重命名EDOCX1[0]中的顶部条目
对Product Identifier也一样
步骤5-对测试重复步骤3(如果有)**步骤6-如果核心数据的名称与项目名称(如果有)匹配,请对其重复步骤3)**
最后,完成并可以重建(command+shift+k to clean,command+b to build)
- 谢谢,在Xcode7.3.1为我工作
- 这是一个很好的开始。如果在构建阶段等处理复制文件,可能需要打开项目包并进行搜索和替换。
- 您可以更改项目名称,但文件夹名称仍然相同。你知道怎么换吗
- 在Xcode8工作,谢谢!另外,我还要补充一点,第4步必须重复"子"项目的次数。默认情况下,xcode创建"iostest"和"iosuitest"子项目。
- 谢谢!对于Xcode8,应手动重命名授权文件。
- 一般工作。还需要将生成设置>测试>测试主机路径从…./old.app/old更改为…./new.app/new。
- 工作得很有魅力!另外,如果您有单元测试和UI测试目标,请对它们重复步骤3和4。
- 在执行步骤3第2部分(重命名文件夹)时,如果您使用的是git,我建议使用git mv oldname newname,这样git就可以识别出这是一个移动,而不是删除和添加所有文件。
- 谢谢您!对我有用!XCODE 8.2
- 完美,在Xcode 8.2中工作得很好,在编辑方案时只需在这里指出一点,如果单击方案名称一次不可编辑,则选择方案并按返回键,这将使方案名称可编辑。
- 这是一个非常好的答案,准确而全面。希望我能给它10票赞成票,但1票就足够了。:)
- 不要忘记查找和替换旧项目名称的其他实例。
- 这很有效(xcode 8.2.1)。但是,我现在收到了一堆关于几乎所有文件的"丢失文件"编译器警告。目标仍在编译,但它在newname/oldname/appdelegate.h中查找。我试图打扫,但无济于事。有什么主意吗?
- @你用的是酱油吗?我也经历过这种情况,这是由于没有提交文件造成的。
- 最后,如果有人使用git作为他们的代码管理工具,您可能会注意到一系列警告(包括编译器警告)。在执行git-add-a和git-commit-am"…"之后,这些将从xcode中删除。
- @ Jergu?是的,我用的是Git。据我所知,所有的文件都已经被跟踪了。
- @是的,一个真正的承诺为我解决了这个问题。不仅仅是跟踪那些文件。
- 很完美!使用coredata,还可以重命名xcdatamodeld并更改AppDelegate中nspersistentContainer的名称。
- 太棒了,太棒了,总是有效的。
- 很好的答案,尽管我还需要使用下面的步骤在方案上设置可执行文件:stackoverflow.com/a/8378445/433649
- 我的项目中有一个pod文件。在完成第一步之后,pod文件名没有更改为新文件名。然后我将文件夹名改为步骤2。重新打开项目后,但在Xcode中,没有可用的文件。这里发生了什么?
- 在第三步之后,我发现了这个问题
- 正如@aaronash所提到的,如果使用git超过3.2点可能会有问题。当我尝试重新打开xcode时,实用程序窗格被锁定。返回几个步骤并更改文件名可以更正此问题。
- 一定不要让你的应用程序运行(作为一个Mac应用程序,也可能是iOS),否则你的目标不会被重命名,你的脸会爆炸。
- 仅仅为了重新命名一个项目,这是一个需要跨越的障碍。不应该这么复杂。
- @aaronash的评论非常有用,尽管我在步骤3.2之外犯了做git mv oldname newname的错误。我认为应该做而不是第3.2步。(命令负责重命名。)
- 在xcode 9.2上工作得很好:)
- 3.2 wrongly named OLD folder.—可以是多个文件夹(测试文件夹),还应该重命名测试swift文件吗?
- 第3.2步:正确地命名为"狐狸大师"——狐狸大师的名字仍然旧,所以我用终端窗口重命名它: $ mv oldname newname,然后我将它写入硕士狐狸,并用它重命名内陆狐狸:git mv oldname/ newname/。步骤3.3:我有一个"资产Xcassets"popup warning,我不想。最后,我得到了一个关于一个失败的图像的警告。我双击警报,XCODE为我安装图像。现在,我有一些PNG图像直接在项目名称下在项目导航。
- 太棒了!如果你有桥梁头部的话,你必须更新这些头部的目录。你必须改变设定"客观设定"下的"客观设定"
- "Step 1:on the right select the ` file inspector'…I can't find the ` file inspector',xcode 9.2
- 如果您使用的是垃圾邮件,也请参看@vaiden answer,而不是open xxx.xcworkspace来更改名称!打开XXX.XCODEPROJ文件
- 在XCODE 9中,您可以从XCODE ITSELF中的第3步(Renaming the Folder)开始,作为与实际的Folders的链接组。
- 步伐3.6自动为我。
- 获取实体错误?Go to target>capabilities and enable push notifications,(wait,look at status),then disable.这应该是重新提出的理由。
加上@luke west的绝妙答案:
使用椰子时步骤2之后:
退出XCODE。
在主文件夹中,将OLD.xcworkspace重命名为NEW.xcworkspace。
步骤4之后:
在xcode中:从项目导航器中选择并编辑Podfile。你应该看到一个旧名称的target条款。把它换成新的。
退出XCODE。
在项目文件夹中,删除OLD.podspec文件。
rm -rf Pods/
运行pod install。
打开XCODE。
在项目导航器中单击您的项目名称。
在主窗格中,切换到Build Phases选项卡。
在Link Binary With Libraries下,查找libPods-OLD.a并删除它。
如果您有一个objective-c桥接头,请转到构建设置并将头的位置从old/old桥接头.h更改为new/new桥接头.h。
清洁和运行。
- 使用XCODE 8.3.2我不得不使用椰子粉,并将所有种类的粉末都用新的名称运行。
- @steffenk方法和rm-rf pods/?考虑到你做了所有其他的步骤?
- 是的,有一些迹象表明,我的项目在名称发生变化之后会崩溃。可可粉除虫剂将取出。
- 请你做硼酸盐好吗?什么痕迹?
- @Vaiden感谢你在和椰子一起工作的时候非常清晰!这个过程创造了一个第二个奇怪的参照点,但在清除之后一切都是完美的!再次感谢!注:
- 谢谢,我得再走一步。点击您的项目名称在项目导航中>>>>>>>>>>under identity(a new drop down appeared)->浏览和选择我的信息.plist file->
- @Mustaq is this related to cococapods or just a general step that needs to be taken?
- 能否有人告诉我在哪里能找到这个老问题?podspec file that is mentioned in this answer?在我的项目中,我有一些文件,比如Podfile/Podfile.lock/
- 当你被分配/规划时,你只需要一份Podspec文件,作为一个椰子分发你的项目。如果你真的知道,那么我猜你没有Podspec,@codedude
- 非常感谢你第九步"后四步"是金色的。
- @Vaiden我找不到Libpods-old.在我的建筑物里有一个文件,请让我知道我能找到它并清除它。
- @Vivek-It's not actually named libpods-old.a.It's named libpods-{The original uproject}.A
- @Vaiden I haven't found libpods-{the original up project}.a even found any file/framework extension with a,what should I do?
- 当重命名一个手表项目时,你需要重命名手表应用程序和手表扩展。还有一个问题。项目遇到了一个错误的失败,在手表上安装了初始视图控制器。所有的名字都是正确的,但不走。
使用shell命令的更快解决方案(也适用于cocoapods):
在继续之前,请先将cd发送到非git存储库??
步骤1-先决条件
将原始项目文件夹复制到Git存储库外的临时/NewProjectFolder。???对.git的更改可能会损坏您的git索引????
步骤2-打开终端
现在我们将把这个项目从oldName重命名为NewProject。
- 关闭xCODE。
- 去你的/NewProjectFolder那里。
1
| cd /Path/to/your/NewProjectFolder |
- 重命名包含源字符串的文件和目录。您将需要运行此命令两次,因为首先将重命名目录,然后在下一次迭代中重命名其中的文件和目录。
1
| find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'NewProject' |
- 检查是否重命名了包含源字符串的所有文件。您应该看到空输出。
1
| ack --literal --files-with-matches 'oldName' --print0 | xargs -0 sed -i '' 's/oldName/NewProject/g' |
- 检查是否替换了所有文件中出现的字符串。您应该看到空输出。
- 运行pod install。
- 将NewProjectFolder添加到存储库中。
- 你完了!
- 谢谢你,我发现它很有用。当拷贝和传输命令如我所愿,如果工作能被最小化,以此作为"Yournewazingprojectname"的一个例子,那就太过分了,只要使用"example"就可以延长我删除键的生命。
- @Lplrich谢谢你的建议,我只是更新了我的答案。
- 这工作很完美,而且很快!非常感谢你。
- The main folder was renamed,but I'm not seeing any other directories or files renamed,any suggestions?
- 你需要运行EDOCX1&3ÐANParker,你需要运行的两个轴,文件和指向,在第二个轴上重命名。
- The issue was that I didn't remove before I ran the commands,they don't work if i t's an active git repo.
- 我要做的一件额外的事情是从我的项目的target>General>Linked Frameworks and Libraries部分删除"pods-oldname.framework",以消除错误framework not found Pods_oldName clang: error: linker command failed with exit code 1 (use -v to see invocation)。
- 我在我的项目中使用了coredata,我不得不运行这个命令,不是两次,而是三次。
有一个吉普赛项目叫Xcode Project Renamer:
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).
项目重命名
- 这对我不起作用
- 很简单,谢谢你的黑客。
- 令人印象深刻这是多么容易……多谢
- 像一个F*$%&;)魅力!(对不起,这是欢乐的誓言!)
变更项目名称;
在项目导航器中选择项目。
2.在"文件检查器"的"标识和类型"部分,在"名称"字段中输入新名称。
3、按压返回。
将显示一个对话框,列出项目中可以重命名的项。该对话框包含更改后项目显示方式的预览。
要有选择地重命名项目,请禁用不想重命名的任何项目的复选框。若要仅重命名应用程序,请保留选定的应用程序并取消选择所有其他项目。
按"重命名"
Special instructions when following@luke-west's+@vaiden's solutions:
此外,我没有必要用步骤3 of@vaiden's solution.在终端得到了所有的老堆文件
I also did not have to use 9 in@vaiden's solution,instead I just removed the old project named framework under link binary libraries(The newly named framework was already there)
So the updated steps would be as follows:
步骤1-重命名项目
点击您想要在第十六码视图左侧"项目导航"中重命名的项目。
On the right select the"file inspector"and the name of your project should be in there under"identity and type",change it to the new name.
单击"重命名"菜单
步骤2-重命名方案
在顶端酒吧(靠近"停下"的按钮),有一个方案适合你的老产品,点击它,然后去"管理方案"
点击方案中的旧名称,它将成为可编辑的,更改名称。
退出XCODE
在主文档中,重命名旧的XCWorkspace to new.XCWorkspace.
用你的资产重命名狐狸
退出
在正确的名称中,有一个新的名称是XCODEPROJ文件与错误的名称是老的FOLDER。将旧折叠重命名为你的新名字
重新开启项目,你会看到一个警告:"老狐狸不存在",警告说
在左边的"项目导航"中,点击顶级旧折叠机的名称。
在"身份和类型"下,您会看到输入的"名称",将此从旧名称改为新名称
下面有一个"定位"入口。点击一个折叠的旧名字和一些新的重命名折叠
步骤4-重命名建筑物数据
点击左侧"项目导航"中的项目,在主板选择"建造"设置
搜索本节中的"Plist"在包装下,您会看到信息,Plist,和产品组的标识符。
重命名最上方的信息
同样的产品标识符
处理粉末文件
In XCODE:choose and edit podfile from the project navigator.你应该看到一个老名字的目标条款。把它变新。
退出XCODE
在终端,CD进入项目目录,然后:rm -rf Pods/
运行平台。
Open XCode.
在您的项目名称上单击"导航"项目。
在主板上,开关到建筑物相位表。在与图书馆连接的二进制中,看着旧的框架并清除它(应该说它是失踪的)新的框架应该在那里,如果不使用"+"按钮在窗口底部添加
如果你有一个客观的桥接主机去建造和改变主机的位置
干净和运行。
你应该可以在成功的脚步上走完之后,用无误的方式建立起来。
- 对于步骤5.3,而不是rm-rf Pods/,一种更清洁的方法是运行pod deintegrate,它从xcode项目中除去所有可可豆的痕迹,但保持podfile的完整性。