Duplicar e renomear o projeto Xcode e pastas associadas [fechado]

195

Gostaria de poder duplicar um projeto Xcode inteiro, renomear o projeto e os arquivos associados sem que o Xcode ficasse mental e sem ter que reimportar manualmente todos os arquivos para o projeto.

Sammio2
fonte

Respostas:

368

Esta resposta é o culminar de várias outras postagens e tutoriais do StackOverflow pela Internet, reunidos em um único local para referência futura e para ajudar qualquer pessoa que esteja enfrentando o mesmo problema. Todo o crédito é concedido para outras respostas no final.

Duplicando um projeto Xcode

  • No Finder, duplique a pasta do projeto no local desejado do seu novo projeto. Não renomeie o nome do arquivo .xcodeproj ou as pastas associadas neste estágio.

  • No Xcode, renomeie o projeto. Selecione seu projeto no painel do navegador (painel esquerdo). No painel Utilitários (painel direito), renomeie seu projeto, Aceite as alterações que o Xcode propõe.

  • No Xcode, renomeie os esquemas em "Gerenciar esquemas", renomeie também os destinos que você tiver.

  • Se você não estiver usando o Identificador de pacote padrão que contém o PRODUCT_NAME atual no final (será atualizado automaticamente), altere seu Identificador de pacote para o novo que você usará no seu projeto duplicado.

Renomeando a pasta de origem

Portanto, depois de seguir as etapas acima, você deve ter um projeto Xcode duplicado e renomeado que deve ser compilado e compilado com êxito, no entanto, sua pasta de código-fonte ainda será nomeada como no projeto original. Isso não causa problemas no compilador, mas não é a estrutura de arquivos mais clara para as pessoas navegarem no SCM, etc. Para renomear esta pasta sem interromper todos os links de arquivos, siga estas etapas:

  • No Finder, renomeie a pasta de origem. Isso interromperá o seu projeto, porque o Xcode não detectará automaticamente as alterações. Todas as suas listagens de arquivos xcode perderão seus links com os arquivos reais, e todas ficarão vermelhas.

  • No Xcode, clique na pasta virtual que você renomeou (Isso provavelmente estará no topo, logo abaixo do seu projeto .xcode real). Renomeie para coincidir com o nome no Finder, isso não corrigirá nada e não é estritamente um etapa necessária, mas é bom ter os nomes dos arquivos correspondentes.

  • No Xcode, selecione a pasta que você acabou de renomear no painel de navegação. Em seguida, no painel Utilitários (extrema direita), clique no ícone que se parece com a pasta cinza escura, logo abaixo do menu suspenso 'Local'. A partir daqui, navegue até a pasta renomeada no localizador e clique em 'Escolher'. Isso irá associar automaticamente automaticamente todos os seus arquivos e eles não deverão mais aparecer em vermelho no painel de navegação do Xcode.

Ícone para clicar

  • Nas configurações de construção do seu projeto / destinos, procure o nome da pasta antiga e renomeie manualmente as ocorrências encontradas. Normalmente, existe um para o prefix.pch e outro para o info.plist, mas pode haver mais.

  • Se você estiver usando bibliotecas de terceiros (Testflight / Hockeyapp / etc), também precisará procurar por 'Caminhos de pesquisa da biblioteca' e renomear aqui também quaisquer ocorrências do nome do arquivo antigo.

  • Repita esse processo para qualquer pasta de código-fonte de teste de unidade que seu projeto possa conter; o processo é idêntico.

Isso deve permitir que você duplique e renomeie um projeto xcode e todos os arquivos associados sem precisar editar manualmente nenhum arquivo xcode, além de arriscar estragar tudo.

Créditos

Muito obrigado é dado a Nick Lockwood e Pauly Glott por fornecer respostas separadas para esse problema.

Sammio2
fonte
3
Depois de seguir o procedimento acima, apenas procurei no "buraco antigo" o projeto do furo e encontrei o que precisava ser alterado (cabeçalho do prefixo) e ele compilou ok com "novo nome" e em outro local. Ótimo tutorial - exatamente o que eu precisava. (Testado com o Xcode 5.0.1 / iOS 7.0)
Mac
Isso não pareceu me levar até lá (no Xcode 5.0.2 aqui, com um projeto que foi migrado de 4.6.3 para 5.0.0). Havia muitas coisas dentro do *.xcodeproj/project.pbxprojarquivo que continham o caminho da pasta original. Em particular, a construção estava falhando porque continuava procurando um info.plist na pasta original.
9183 Steven Lu
2
Como curiosidade, aqui é uma espécie de maneira da velha escola para fazer isso ... stackoverflow.com/questions/10006482/... (resposta de Daniel)
Fattie
1
O Xcode 7.1.1 trava para mim no primeiro obstáculo - renomeando o projeto. Investigará, mas mais alguém encontrou isso?
precisa saber é o seguinte
5
Está faltando como lidar quando você tem a integração do Cocoapods no projeto. Eu encontrei um link útil para lidar com isso também: h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK
30

Estou postando isso desde que sempre lutei ao renomear um projeto no XCode.

Renomear o projeto é bom e simples, mas isso não renomeia a pasta de origem. Aqui está um passo a passo do que eu fiz que funcionou muito bem no Xcode 4 e 5, graças aos links abaixo.

Links REF:
Renomear projeto.
Renomeie a pasta de origem e outros arquivos.

1- Faça backup do seu projeto.

Se você estiver usando o git, confirme as alterações, faça uma cópia de toda a pasta do projeto e faça backup no time machine antes de fazer alterações (esta etapa não é necessária, mas eu recomendo).

2- Abra seu projeto.

3- Clique duas vezes lentamente ou pressione Enter no nome do projeto (ícone azul no topo) e renomeie-o para o que quiser.

NOTA: Depois de renomear o projeto e pressionar 'enter', será sugerido que você altere automaticamente todas as entradas relacionadas ao nome do projeto e permitirá que você desmarque algumas delas, se desejar. Selecione todos eles e clique em ok.

4- Renomeie o esquema

a) Clique no menu ao lado do botão Parar e selecione Gerenciar esquemas.

b) Clique com o botão direito do mouse ou pressione Enter no antigo esquema de nomes e renomeie-o para o que quiser.

c) Clique em ok.

5 - Crie e execute para garantir que funcione.

OBSERVAÇÕES: Nesse ponto, todos os arquivos importantes do projeto devem ser renomeados, exceto os comentários nas classes criadas quando o projeto foi criado, nem a pasta de origem. Em seguida, renomearemos a pasta no sistema de arquivos.

6- Feche o projeto.

7- Renomeie a pasta principal e a fonte.

8- Clique com o botão direito do mouse no .xcodeprojarquivo do pacote do projeto e selecione “Mostrar Conteúdo do Pacote” no menu de contexto. Abra o arquivo .pbxproj com qualquer editor de texto.

9- Pesquise e substitua qualquer ocorrência do nome da pasta original pelo novo nome da pasta.

10- Salve o arquivo.

11- Abra o projeto XCode, teste-o.

12- Feito.

EDIT 10/11/19:

Existe uma ferramenta para renomear projetos no Xcode, que eu não tentei o suficiente para comentar. https://github.com/appculture/xcode-project-renamer

fs_tigre
fonte
2
A questão era duplicar e renomear o projeto copiado. Esta resposta é apenas para renomear um projeto existente.
martinjbaker
1
Essa, para mim, é a abordagem mais simples. Apenas copie a pasta original do projeto, por exemplo, MyProject, recursivamente para "MyNewProject". Em seguida, abra MyNewProject e continue com as instruções de fs_tigre. Estou surpreso que nem o Android Studio nem o Xcode forneçam uma opção "Arquivo-> Clonar projeto", o que seria muito conveniente. Talvez um bom projeto de plugin para alguém ( nshipster.com/xcode-plugins )?
Blisterpeanuts
Único método que trabalhou para mim - Xcode 8.2
GreenAsJade
2
Etapa 10.1 - Se você tiver arquivos de cabeçalho e / ou direitos de ponte, renomeie-os para refletir seu novo nome. Se estiver usando Cocoapods, edite o nome no seu arquivo pod.
David Lari
6

A partir do XCode 7, isso se tornou muito mais fácil.

A Apple documentou o processo em seu site: https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/RenamingaProject/RenamingaProject.html

Atualização: link do XCode 8: http://help.apple.com/xcode/mac/8.0/#/dev3db3afe4f

PBICS
fonte
2
Isso só funciona para renomear as partes internas do aplicativo, mas externamente as pastas para o aplicativo permanecem inalterados
smac89
2

Estou usando esse script depois de renomear meu projeto iOS. Ajuda a alterar o nome dos diretórios e sincronizar os nomes.

http://github.com/ytbryan/rename

NOTA: você precisará alterar manualmente o nome do esquema.

ytbryan
fonte
1

No código de exemplo do livro "OpenCV instantâneo para iOS" , encontrei um script bash que copia um projeto de uma pasta para outra.
Pesquisando um pouco, encontrei um post do blog que parece ser o autor original do script: http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html , em que você pode baixar o script . Eu tentei e executá-lo a partir do terminal como este

    sh renameXcodeProject.sh <name-of-existing-folder> <name-of-folder-to-create>   

funciona bem.
Informações adicionais podem ser encontradas abrindo o arquivo com um editor de texto. espero que ajude

Giorgio Tempesta
fonte
0

Estou usando o Xcode 6+ e apenas faço:

  • Copie todos os arquivos nas pastas do projeto para novas pastas (com novo nome).
  • Abrir *.xcodeproj or *.xcworkspace
  • Mude o nome do projeto.
  • Clique no esquema e exclua o chema atual e adicione um novo.

Aqui está feito, mas o nome da janela Xcode e *.xcodeproj or *.xcworkspaceainda <old-name>. Então eu faço:

  • pop install
  • Abrir <new name>.xcworkspace
SLyHuy
fonte
0

Mais uma coisa para tentar!

Quando copiei todos os meus arquivos, abri o projeto e o renomeei, tudo mudou para o meu novo nome de projeto, exceto o destino do teste! Eu recebi um erro de vinculador dizendo que estava faltando um arquivo chamado "myOldProjectname.app". Aqui está o que foi corrigido:

  1. Clique nas configurações do seu projeto e selecione seu alvo de teste insira a descrição da imagem aqui

  2. Clique nas configurações de compilação e pesquise "host de teste" insira a descrição da imagem aqui

  3. Verifique esses 2 caminhos de arquivo. As chances são de que esses dois caminhos ainda estejam apontando para o nome do seu projeto antigo. insira a descrição da imagem aqui

Espero que ajude!

erparker
fonte
0

Para qualquer pessoa que tenha problemas com o storyboard trava depois de copiar seu projeto, vá para Main.storyboard no Identity Inspector.

Em seguida, verifique se o seu módulo atual é o módulo renomeado correto e não o antigo.

Wraithseeker
fonte
0

Estou usando o script BASH simples para renomear.

Uso: ./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}"

Notas:

  1. Este script ignorará todos os arquivos como .gite.DS_Store
  2. Não funcionará se o nome antigo / novo nome contiver espaços
  3. Pode não funcionar se você usar pods (não testados)
  4. O nome do esquema não será alterado (de qualquer maneira, o projeto será executado e compilado normalmente)
Anton Malmygin
fonte