Copie o projeto existente com um novo nome no Android Studio

100

Gostaria de copiar meu projeto Android e criar um novo projeto a partir dos mesmos arquivos, mas com um nome diferente. O objetivo disso é que eu possa ter uma segunda versão do meu aplicativo que é compatível com anúncios na loja de aplicativos.

Encontrei esta resposta aqui:

Android - copie o projeto existente com um novo nome

Mas é para Eclipse. Como posso fazer isso no Android Studio?

Mike
fonte

Respostas:

66

As etapas no link que você especificou também devem funcionar para o Android Studio. Basta fazer uma cópia (usando um gerenciador de arquivos) de toda a pasta do módulo e dar a ela um novo nome. Agora abra-o e use Refactor -> Rename(clique com o botão direito no item que deseja renomear) para renomear seu módulo e pacote.

Consulte isso para obter detalhes sobre a refatoração no IntelliJ / Android Studio.

free3dom
fonte
O Windows 10 diz que o caminho do arquivo é muito longo. Eu tenho a atualização anterior e fiz o truque do Editor de Diretiva de Grupo para criar caminhos de arquivo longos. Parece que o Explorer ainda não consegue lidar com caminhos de arquivos longos. Consulte: superuser.com/questions/1114181/…
Andrew S
3
Eu tentei isso, mas quando executo o projeto, o Android Studio está substituindo meu aplicativo antigo no meu dispositivo. Quero ter os dois aplicativos simultaneamente no dispositivo (para testar as guias personalizadas do Chrome). Como posso forçar o Android Studio a ter os dois aplicativos ao mesmo tempo no dispositivo?
Locksleyu
Selecionei a pasta do pacote base e cliquei em Refatorar -> Renomear, encontrei erros com a opção "renomear o pacote", então fiz a opção "renomear a pasta" com sucesso.
Ismail Yavuz
Também deve refatorar e renomear o arquivo iml !!!, se não fizer isso, não funcionará
JoeCoolman
43

Se você usa Gradle - não se esqueça de alterar o atributo applicationId no arquivo app / build.gradle .

Sergii
fonte
3
Isso é muito importante porque eu esqueci de modificar o applicationId no arquivo build.gradle e acabei publicando um aplicativo com um nome de pacote incorreto na Play Store
wenjiun
Isso é mais um comentário do que uma resposta real.
The Unknown Dev
Essa foi a chave!
Denis
39

Como free3dom apontou , aqui está o que deve ser feito:

  1. Crie uma cópia usando o gerenciador de arquivos
  2. Edite manualmente o build.gradlearquivo do aplicativo para alterar o nome do pacote (você pode usar o gerenciador de arquivos).
  3. Edite manualmente AndroidManifest.xmlpara alterar o nome do pacote.
  4. Corra gradle sync.
  5. Abra o projeto no Android Studio e refatore o nome do pacote.
  6. Execute a sincronização do Gradle novamente.

Isso parece funcionar sem problemas.

Veeru
fonte
9
Gostaria de saber como você está fazendo uma sincronização gradle fora do Android Studio
erdomester
1
seguiu, mas não fez a etapa 4, apenas abriu o Android Studio e importou o projeto copiado. Também excluiu o arquivo .iml do projeto copiado, pois um novo foi criado. funcionou muito bem! obrigado!
nommer
@nommer de que está .imlfalando ?? posso encontrar um em project/prjectname.imle outro em project/app/app.iml, qual deve ser excluído?
Hirdesh Vishwdewa
@Veeru pode explicar o 5º passo ??
Hirdesh Vishwdewa
@HirdeshVishwdewa boa pergunta! Eu fiz isso há um tempo que não consigo me lembrar, mas acho que é project / *.
iml
31

Se estiver usando a versão mais recente do Android Studio, você pode deixar que ela o ajude nisso.

Observação: testei isso apenas no Android Studio 3.0.

O procedimento é o seguinte:

  1. Na visualização do projeto (acompanha capturas e estrutura no lado esquerdo da tela), selecione Projeto em vez de Android .
    O nome do seu projeto será o topo da árvore (junto com as bibliotecas externas).
    Selecione seu projeto e vá para Refactor -> Copy....
    O Android Studio irá perguntar a você o novo nome e onde você deseja copiar o projeto. Forneça o mesmo.

  2. Depois que a cópia for concluída, abra seu novo projeto no Android Studio.
    Os pacotes ainda estarão com o nome do projeto antigo.
    Esses são os pacotes de classes Java, ID do aplicativo e tudo mais que foi gerado usando o nome do pacote antigo.
    Nos precisamos alterar aquilo.
    Na visualização do projeto, selecione Android .
    Abra o subdiretório java e selecione o pacote principal.
    Em seguida, clique com o botão direito nele e vá para Refactorentão Rename.
    O Android Studio lhe dará um aviso dizendo que vários diretórios correspondem ao pacote que você está prestes a refatorar.
    Clique em Rename packagee não Rename directory .
    Após esta etapa, seu projeto agora está totalmente com o novo nome.

  3. Abra o arquivo res / values ​​/ strings.xml e mude o nome do projeto.
  4. Não se esqueça de alterar o ID do seu aplicativo no "Módulo Gradle Build: app".
  5. Uma última etapa é limpar e reconstruir o projeto, caso contrário, ao tentar executar seu projeto, o Android Studio dirá que não pode instalar o APK (se você executou o projeto anterior).
    Então Build -> Clean project, em seguida Build -> Rebuild project.
    Agora você pode executar seu novo projeto clonado.
nt.bas
fonte
A etapa 4 é o que eu precisava para obter uma falha de implantação, projeto copiado depois de apenas copiar a pasta, eu acho
Jim Factor
2
Importante: se estiver usando os serviços do Google Play. Além disso, certifique-se de atualizar os nomes dos pacotes no arquivo google-services.json.
Gihan Gamage
Obrigado por esta resposta! Uma adição: eu também atualizei rootProject.name em settings.gradle.
alexx
16

O objetivo disso é que eu possa ter uma segunda versão do meu aplicativo que é compatível com anúncios na loja de aplicativos.

Atualmente, a melhor maneira de fazer isso é sem copiar o projeto.
Você pode fazer isso usando diferentes sabores em seu build.gradlearquivo.

 productFlavors {
        flavor1 {
            applicationId = "com.example.my.pkg.flavor1"
        }
        flavorAdSUpport {
            applicationId = "com.example.my.pkg.flavor2"
        }
  }

Desta forma, você tem apenas uma cópia dos arquivos e pode lidar facilmente com a diferença.

Gabriele Mariotti
fonte
14

Esta é uma combinação da resposta do nt.bas com a etapa 9 da resposta do Civic com exemplos visuais, pois demorei um pouco para descobrir o que se pretendia, já que sou novo no Android Studio. Ele foi testado no Android Studio 3.2.1.

  1. Abra o projeto que deseja clonar no Android Studio. (Neste exemplo, o nome do projeto antigo era test5e o novo nome do projeto era test6)

  2. No painel esquerdo de visão geral do arquivo, clique em: Projeto (onde atualmente pode ser android).

fig0

  1. Clique com o botão direito do mouse no projeto dentro do painel do explorador de arquivos e clique em refatorar> clonar.

Figura 1

  1. Mude o "Novo nome" para o seu novo nome de projeto e clique em ok.

Figura 2

  1. Arquivo> abrir> Nova janela> Selecione seu novo projeto> Abrir em nova janela de projeto. Na nova janela, aguarde até que a linha de fundo do Android Studio seja concluída / diga: "Gradle Sync Finished".

16

17

14

  1. No painel de visão geral do arquivo e clique com o botão direito do mouse (RMB) em: app.java/ <seu nome de projeto antigo (não o de teste, não o androidTest, apenas o em branco)>

fig8

  1. Insira o novo nome do seu pacote e selecione as duas marcas de seleção, clique em refatorar.

fig9 fig10

  1. Na barra inferior esquerda, clique em "Refatorar".

fig12

  1. Abra app / res / values ​​/ strings.xml e altere o nome do projeto antigo (por exemplo, test5) para o novo nome do projeto na linha:

    <string name="app_name">test5</string>
    

fig3

  1. Abra Gradle scripts / build.gradle (Module: app) e altere a linha para a mesma linha com o nome do seu novo projeto:% fig4

    applicationId "com.example.a.test5"    
    

fig4

  1. Uma linha amarela aparecerá na parte superior do painel de código, solicitando a sincronização do Gradle. Pressione "sincronizar agora".

fig5

  1. na barra superior, pressione construir> Limpar projeto.

fig13

  1. Se aparecer "Compilação do Gradle concluída" no canto inferior esquerdo, clique em "Compilar> Reconstruir projeto".

fig14

fig15

  1. Agora você deve ser capaz de compilar e executar seu projeto novamente (se funcionou no primeiro lugar).
em
fonte
1
Ótima resposta! também se pode usar arquivo> novo> importar projeto em vez de abrir projeto na etapa 5 acima. Isso é o que funcionou para mim.
Sasuke Uchiha
8

Estou seguindo estas etapas e tem funcionado até agora:

  1. Copie e cole a pasta como costumava fazer.
  2. Abra o Android Studio (v3.0.1).
  3. Selecione Abrir um projeto existente.
  4. Feche a mensagem que aparecerá com o título: "Import Gradle Projects".
  5. No lado esquerdo da guia Android, vá para: app -> java -> selecione a primeira pasta (a pasta do seu projeto)
  6. Refatorar => Renomear ... (Shift + F6)
  7. Renomear pacote, selecionar as duas opções - Coloque o nome da nova pasta em letras minúsculas.
  8. Refatorar
  9. Selecione: Sync Project with Gradle Files na barra de ferramentas.
  10. Construir => Limpar Projeto
  11. Vá para app -> res -> values ​​-> strings.xml e altere o nome do aplicativo na 2ª linha.
Cívico
fonte
Além disso, se você usar qualquer API de serviço do Google, como Maps, Firebase e outros ... Certifique-se de remover os arquivos que possuem referências de nome de pacote antigas (como google_services.json em app / src). Consulte isso para todo o procedimento.
varun
3

O apêndice do gitbook Android Developer Fundamentals Course Practicals inclui etapas para copiar e renomear um projeto existente:

https://google-developer-training.gitbooks.io/android-developer-fundamentals-course-practicals/content/en/apencha_utilities.html#copy_project

Bryon Nicoson
fonte
Funcionou muito bem para mim com o Android Studio 3.3, com um projeto complexo que possui muitos módulos e dependências. Obrigado.
nat101
1
Esse link está em sua última etapa: "Este site será removido em 31 de julho de 2019."
Peter Mortensen de
3

Ao refatorar o nome do pacote no Android Studio, você pode precisar clicar na pequena engrenagem à direita do pacote / android / project / etc - navigator e desmarcar 'compact empty middle packages' para ver cada parte do nome do pacote como um diretório próprio. Em seguida, para diretórios individuais, refatorar.

Isso é importante se você precisar alterar todas as partes do nome do pacote. Por exemplo, de com.example.originalproject para org.mydomain.newproject. Caso contrário, a operação de refatoração / renomeação só permitirá que você altere "originalproject" para "newproject" e deixará "com.example" inalterado. Há um bom vídeo que mostra isso: https://www.youtube.com/watch?v=dMK-RBVLeIY

gnyrfta
fonte
2

Ao copiar o projeto, você também precisará excluir os arquivos de compilação intermediária remanescente original (someActivity $ 4.class) dos diretórios C: ... \ AndroidStudioProjects (project_name) \ app \ build \ intermediates \ classes \ release .... Caso contrário, você quase certamente terá falhas de compilação para o novo projeto se tentar compilar o projeto copiado. Refatorar não resolverá isso.

Mark Rossmiller
fonte
2

Tentei a partir de nt.bas answer e gnyrfta answer, que funcionam bem para mim.

Citando a resposta de nt.bas :

Se estiver usando a versão mais recente do Android Studio, você pode deixar que ela o ajude nisso.

Observação: testei isso apenas no Android Studio 3.0.

O procedimento é o seguinte:

  1. Na visualização do projeto (acompanha capturas e estrutura no lado esquerdo da tela), selecione Projeto em vez de Android .
    O nome do seu projeto será o topo da árvore (junto com as bibliotecas externas).
    Selecione seu projeto e vá para Refactor -> Copy....
    O Android Studio irá perguntar a você o novo nome e onde você deseja copiar o projeto. Forneça o mesmo.

  2. Depois que a cópia for concluída, abra seu novo projeto no Android Studio.
    Os pacotes ainda estarão com o nome do projeto antigo.
    Esses são os pacotes de classes Java, ID do aplicativo e tudo mais que foi gerado usando o nome do pacote antigo.
    Nos precisamos alterar aquilo.
    Na visualização do projeto, selecione Android .
    Abra o subdiretório java e selecione o pacote principal.
    Em seguida, clique com o botão direito nele e vá para Refactorentão Rename.
    O Android Studio lhe dará um aviso dizendo que vários diretórios correspondem ao pacote que você está prestes a refatorar.
    Clique em Rename packagee não Rename directory .
    Após esta etapa, seu projeto agora está totalmente com o novo nome.

  3. Abra o arquivo res / values ​​/ strings.xml e mude o nome do projeto.
  4. Uma última etapa é limpar e reconstruir o projeto, caso contrário, ao tentar executar seu projeto, o Android Studio dirá que não pode instalar o APK (se você executou o projeto anterior).
    Então Build -> Clean project, em seguida Build -> Rebuild project.

Até este ponto, você apenas renomeia o nome completo do projeto . Para renomear o nome do pacote, você precisa seguir a resposta do gnyrfta, que foi descrita como:

Ao refatorar o nome do pacote no Android Studio, você pode precisar clicar na pequena engrenagem à direita do pacote / android / project / etc - navigator e desmarcar 'compact empty middle packages' para ver cada parte do nome do pacote como um diretório próprio. Em seguida, para diretórios individuais, refatorar.


PS: Se você está tendo um

Falha ao finalizar a sessão: INSTALL_FAILED_INVALID_APK: A divisão lib_slice_0_apk foi definida várias vezes

Basta excluir a pasta de construção do appmodule e reconstruir o projeto!

Isso vai resolver o problema!

Mukyuu
fonte
2

Estou usando o Android 3.3 e é assim que funcionou para mim:

1 - Escolha a visualização do projeto

2 - Clique com o botão direito no nome do projeto, que está na raiz do projeto e escolha a opção refactor -> copy, aparecerá uma janela para você escolher o novo nome.

3 - Após a etapa 2, o Android fará um novo projeto para você, você tem que abrir esse novo projeto com o novo nome

4 - Altere o nome do app no ​​"string.xml", fica em "app / res / values ​​/ string.xml"

Agora você tem, o mesmo projeto com um novo nome. Agora você pode querer mudar o nome do pacote, está descrito nas seguintes etapas

(opcional) Para alterar o nome do pacote principal

5 - vá em "app / java", haverá três pastas com o mesmo nome, uma principal, uma (androidTest)e uma (test), clique com o botão direito na principal e escolha format -> rename, será exibido um aviso de que vários diretórios correspondem a esse pacote e clique em "Renomear pacote". Escolha um novo nome e clique em refatorar. Agora, abaixo da visualização do código, aqui terá uma visualização do refatoramento, clique em "Do refactor"

6 - Vá até a opção "construir", clique em "Limpar projeto", depois em "Reconstruir projeto".

7 - Agora feche o projeto e reabra-o novamente.

vinicius de novaes
fonte
1
Enfim, uma solução que não leva 20 minutos! Funcionou na primeira tentativa sem erros estranhos. Para a etapa 5, acabei de refatorar-> renomeei meu pacote.
Snowman
2

Vá para a pasta de origem onde está seu projeto.

  1. Copie o projeto e cole e altere o nome.
  2. Abra o Android Studio e atualize.
  3. Vá para ->Settings.gradle.
  4. Incluir ':your new project name '
Bassem Qoulta
fonte
2

Requisito e teste no Android Studio 3.5

Certifique-se de que seu projeto antigo esteja funcionando corretamente com a biblioteca do Android Studio existente.

  1. Copie o diretório do projeto e renomeie a pasta para o novo nome do projeto, por exemplo, Bramara
  2. Abra seu novo projeto existente usando o Android Studio 3.5. Depois de abrir o projeto completo, navegue até 1: Projeto -> Projeto. Você pode ver que seu projeto tem apenas dois diretórios apontando para a nova pasta do projeto e a pasta do projeto antigo. Feche seu projeto.
  3. Edite appl.iml no diretório novo projeto -> app -> appl.iml usando o editor de texto. Substitua todo o nome do projeto antigo pelo novo Nome do projeto.
  4. Reabra seu novo projeto existente. Navegue até 1: Projeto -> Projeto. Você pode ver que seu projeto tem apenas um diretório.
  5. Navegue até 1: Projeto -> Pacotes. clique com o botão direito em seu componente -> Refatorar -> Renomear.
  6. Uma mensagem de aviso aparecerá. Certifique-se de que todas as alterações serão aplicadas à nova pasta do projeto! Depois disso, escolha Renomear pacotes, por exemplo, com.dedetok.bramara.
  7. Navegue até 1: Projeto -> Android. Abra o aplicativo -> manifestos -> AndroidManifest.xml. Corrija a atividade do aplicativo para o novo nome do pacote. Altere o nome do aplicativo para um novo.
  8. Abra Scripts do Gradle -> build.gradle (Módulo: app), altere seu applicationId para um novo projeto, por exemplo, com.dedetok.bramara e sync project.
  9. Limpe e reconstrua seu novo projeto.
  10. Seu novo projeto está pronto para edição / alteração.

Nota: se adb executado mostrando atividade não encontrada, edite sua configuração de execução / depuração. O módulo deve apontar para o aplicativo do módulo, por exemplo, app.

Dedetok
fonte
Na etapa 7, não consegui encontrar manifestos de app->. Assim, abri Projeto-> Projeto e da pasta src abri o manifesto. O estúdio pediu para sincronizar para editar o arquivo e, em seguida, deu OK
makkasi
1

A maneira MAIS FÁCIL (e definitivamente a mais rápida) de fazer requer WINRAR, 7zip ou software de arquivamento semelhante:

  1. Encontre a pasta do projeto no Windows Explorer - clique duas vezes para abrir esta pasta.

  2. Crie uma nova pasta com o nome "Backup".

  3. Ainda na pasta do projeto, selecione todos os arquivos / pastas, exceto a pasta "backup".

  4. Clique com o botão direito e selecione "adicionar ao arquivo" ou "criar arquivo" (o comando será diferente dependendo do seu software de arquivamento)

  5. Nomeie o arquivo e clique em ok.

  6. Mova este arquivo para a pasta "Backup".

Pronto - para abrir o arquivo de backup, abra a pasta "Backup" e clique com o botão direito do mouse no arquivo de backup. Selecione "Extrair" ou crie uma nova pasta para a qual os arquivos serão extraídos e clique em "ok" e abra o projeto como faria normalmente no Android Studio, etc.

Tulio Perez
fonte
0

Tive problemas com o seguinte:

https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/apêndice/apêndice-utilities/apencha-utilities.html

na versão Android Studio: 3.3.2

até matar o arquivo .idea / workspace.xml.

$ cp -rv Testcopysource/ TestCopyDest
$ rm TestCopyDest/.idea/workspace.xml
$ stdio.sh & # Run Android Studio on Linux

Antes de fazer isso, o Android Studio ainda apontava para a pasta de origem original e todas as renomeações eram aplicadas aos arquivos de origem originais (dentro do Testcopysource no meu exemplo acima).

David
fonte
0

Em fevereiro de 2020, para o Android Studio 3.5.3, a resposta mais simples que encontrei é este vídeo.

Nota 1: Em 01.24, a guia "Localizar" aparece abaixo. Clique em "Do Refactor" e continue como no vídeo.

Observação 2: se você tiver arquivos Java / Kotlin "marcados como texto simples", precisará modificar o nome do pacote no topo manualmente, ou seja,package com.example.thisplaceneedstobemanuallyupdated

Nota 3: tenha cuidado com as maiúsculas e minúsculas ao renomear, assim como no vídeo.

Nota 4: Se você deseja atualizar o nome do projeto na barra de título da janela do projeto, modifique rootProject.name = 'YourProjectName'dentro do arquivo " settings.gradle " no diretório " Gradle Scripts ".

Xfce4
fonte