Como alterar o nome do pacote de um aplicativo Android

133

Meu keystore está corrompido, portanto, o Android Market está exigindo que eu renomeie o aplicativo e o reenvie. No entanto, sempre que vou editar os nomes dos pacotes no Manifest e nos arquivos, isso gera muitos erros.

Qual é a maneira correta de alterar o nome do aplicativo?

Allen Gingrich
fonte
3
felizmente eles adicionaram um "botão mágico nome, pacote de mudança" desde 2010 - veja a resposta de @ Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier
Obrigado Richard Le ...
DoruChidean
3
Possível duplicado do Android Estúdio Rename Package
Bo Persson
difícil ser um duplicado quando este foi questionado 3 anos antes ...
Ryan Ternier

Respostas:

102

Se você estiver usando o Eclipse, tente estas instruções no site do desenvolvedor do Android. Eles são especificamente para a amostra do GestureBuilder, mas devem ser aplicados a qualquer aplicativo, tanto quanto eu saiba:

Aqui está como você pode fazer isso no Eclipse:

  1. Clique com o botão direito do mouse no nome do pacote ( src/com.android.gesture.builder).
  2. Selecione Refatorar> Renomear e altere o nome, por exemplo, para com.android.gestureNEW.builder.
  3. Abra o arquivo de manifesto. Dentro da <manifest>tag, altere o nome do pacote para com.android.gestureNEW.builder.
  4. Abra cada um dos dois arquivos de atividade e pressione Ctrl-Shift-O para adicionar pacotes de importação ausentes e salve cada arquivo. Execute o aplicativo GestureBuilder no emulador.

Além disso, lembre-se de renomear o próprio pacote, juntamente com as referências a ele nos arquivos. No Eclipse, você pode ver o nome do pacote na janela / visualização em árvore do gerenciador de arquivos, no lado esquerdo. Na minha experiência, o Eclipse às vezes pode ser um pouco exigente e pouco confiável com isso (deixando para trás referências dispersas ao nome do pacote antigo, por exemplo).

eldarerathis
fonte
Esta é provavelmente a melhor maneira de fazê-lo, não há um botão mágico para alterar o nome do pacote.
blindstuff
13
Sim existe. Veja a resposta de @Marc Bernstein.
Mark Phillip
Eu não acho que o questionador original também precise alterar os nomes dos pacotes Java. Marc deve ser a resposta aceita.
precisa saber é o seguinte
O primeiro passo não é "clicar com o botão direito do mouse", deve escolher "Refatorar" no menu.
Deqing 24/09
E você pode precisar alterar app_nameres-> values ​​=> strings.xml
Deqing
302

Existe uma maneira de alterar o nome do pacote facilmente no Eclipse. Clique com o botão direito do mouse no seu projeto, role para baixo até Ferramentas do Android e clique em Renomear Pacote de Aplicativos.

Marc Bernstein
fonte
2
Tentei o Eldar's e funcionou - mas tenho certeza que isso também funcionará.
Allen Gingrich
4
Esta é a resposta correta, mas o ADT atual está quebrado e quebra todas as referências à sua classe R. Portanto, você deve clicar em cada arquivo individual, pressionar "ctrl-shift-o" (ou cmd-shift-o no Mac) e selecionar o seu novo pacote chamado R (NÃO selecione android.R! As coisas vão quebrar terrivelmente ) e pressione salvar. ... e repita para CADA arquivo individual :(
Adam
@ Adam apenas para tornar nossa vida mais fácil, clique no projeto e uso ctrl + shift + o, ele irá atualizar a referência importado na classe ALL / file: D
chama Tama
isso salvou minha vida desde que perdi minha ridícula chave de loja e tive que republicar meu aplicativo.
Teoman shipahi
3
Encontrei os nomes dos pacotes de arquivos declarados na parte superior de cada arquivo para não corresponder ao novo pacote, nem à pasta em que estão. Você pode clicar com o botão direito do mouse na pasta de origem que ainda possui o nome do pacote antigo (pelo menos o meu sempre possui), selecione 'refatorar', depois 'renomear' e renomeie-o para o novo pacote. O eclipse renomeará a pasta e as declarações do pacote de cada arquivo para o novo nome do pacote, como deveria ter feito em primeiro lugar.
AndroidCoder #
52

Veja como você pode fazer isso no Eclipse:

  1. Clique com o botão direito do mouse no nome do pacote ( src/com.android.gesture.builder).
  2. Selecione Refactor > Renamee altere o nome, por exemplo, para com.android.gestureNEW.builder.
  3. Abra o arquivo de manifesto. Dentro da <manifest>tag, altere o nome do pacote para com.android.gestureNEW.builder.
  4. Abra cada um dos dois Activityarquivos e faça Ctrl+ Shift+ Opara adicionar pacotes de importação ausentes e salve cada arquivo.
  5. Execute o GestureBuilderaplicativo no emulador.

Link para postar

Atualize de maneira super fácil com o botão direito do mouse em seu projeto ... insira a descrição da imagem aqui

AZ_
fonte
2
Maneira bastante impressionante de fazer isso!
Cara,
2
A solução mais fácil. Isso deveria ter sido aceito;)
Nomade 23/03
12

No Android Studio , que, sinceramente, você deve usar, altere o nome do pacote porright-clicking do pacote no nome do pacote no diretórioproject structure -> Refactor -> Rename...

Em seguida, oferece a opção de renomear o diretório ou o pacote. Selecione o pacote. O diretório deve seguir o exemplo. Digite seu novo nome de pacote e clique em Refatorar. Ele mudará todas as importações e removerá as importações redundantes para você. Você pode até corrigi-lo em comentários e strings, etc.

Por último , altere o nome do pacote adequadamente em seu AndroidManifest.xml para o topo. Caso contrário, você receberá erros em todos os lugares reclamando da R.whatever.

Outra solução muito útil

Primeiro, crie um novo pacote com o nome desejadoby right clicking on the pasta java -> new -> package.`

Em seguida, selecione e arraste todas as suas classes para o novo pacote. O AndroidStudio fatorará novamente o nome do pacote em qualquer lugar.

Depois disso: build.gradleadicione / edite applicationId do seu aplicativo com o novo. ie ( com.a.bcno meu caso):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

Postagem original e mais comentários aqui

guindaste
fonte
Estranhamente, quando eu faço isso, ele não dá o diretório escolha / pacote ... apenas o "nome do módulo" ...
Fattie
1
Faz o mesmo comigo agora se clicar com o botão direito do mouse no diretório raiz. Pelo menos para mim, esse não é o nome do pacote real. Se o nome do seu pacote for com.a.bc, deve haver um diretório abaixo do diretório raiz chamado bc. É aí que você terá as diferentes opções. No momento, estou obtendo diretório ou módulo. Experimente o módulo. Você sempre pode desfazê-lo (Ctrl + z deve fazê-lo) se quebrar alguma coisa.
craned
Obrigado .. merda, você quer dizer o diretório ".idea" ou o diretório "app"? Acabei de publicar uma Q .. stackoverflow.com/questions/23786361/… Ahh .. Agora vejo "Selecionar diretório / módulo de refatoração" quando clico na minha pasta "app" .... hoy caramba!
Fattie
@JoeBlow clique packagecom o botão direito do mouse na pastajava
Abu Shumon 30/10
"Android Studio, que, honestamente, você deveria estar usando". Lembre-se de que a pergunta foi feita em 2010, enquanto o AS não foi anunciado até 2013, e muito menos lançado como uma versão estável (2014). Concedido, os usuários hoje em dia devem estar usando o AS. :-)
LarsH 4/19/19
8

Sem Eclipse:

  1. Altere o nome do pacote e os nomes de atividades no AndroidManifext.xml e em qualquer outro lugar em arquivos .xml (nomes de exibição personalizados, etc.)

  2. Atualizar instrução de importação de pacote em todos os arquivos de origem

  3. Renomeie todas as pastas para corresponder ao nome do pacote. Locais das pastas:
    a. bin / classes
    b. gen
    c. src

  4. Atualize o nome do projeto em build.xml (ou o nome do seu apk não será alterado)

  5. Exclua todos os arquivos .class em bin / classes / com / example / myapp / (se você pular esta etapa, os arquivos não serão reescritos durante a compilação e o dex causará muitos problemas ao processar erros "o nome da classe não corresponde ao caminho"

  6. Exclua gen / com / example / myapp / BuildConfig.java (não sei por que excluir o BuildConfig.class na etapa 3a não fez com que o dex atualizasse seu caminho para isso, mas até eu excluir o BuildConfig.java, ele recriava gen / com / oldapp_example / oldapp e colocando BuildConfig.class lá. Não sei por que R.java do mesmo local não tem esse problema. Suspeito que BuildConfig.java seja gerado automaticamente na pré-compilação, mas R.java não é)

As 6 etapas acima são o que eu fiz para alterar meu nome de pacote e obter uma compilação * bem-sucedida. Pode haver uma maneira melhor de lidar com as etapas 5 e 6 por meio de comandos dex para atualizar caminhos, ou talvez editando classes.dex.d no diretório raiz do projeto. Eu não estou familiarizado com o dex ou se não há problema em excluir / editar classes.dex.d, por isso fui com o método de excluir arquivos .class que eu sei que serão regenerados na compilação. Depois verifiquei o arquivo classes.dex.d para ver o que ainda precisava ser atualizado.

* Nenhum erro ou aviso deixado na minha compilação, EXCEPT dex e apkbuilder, afirmam "Arquivo de destino excluído encontrado" sem detalhes sobre o que é esse arquivo. Não tenho certeza se isso aparece em todas as versões, se existia antes de eu mexer com o nome do meu pacote ou se é o resultado de minhas exclusões e estou perdendo uma etapa.

clusterflux
fonte
Resolvi renomear como você fez, mas com uma simplificação: exclua as pastas bin e gen. Também eu não poderia importar o projeto renomeado em Eclipse, até que modificou o .project arquivo oculto, que tinha o nome antigo projeto em <name>
Jose_GD
6

Siga esses passos:-

  • Clique com o botão direito do mouse no projeto.
  • Vá para as ferramentas do Android.
  • Clique em Renomear pacote de aplicativos.
  • Mude o nome do pacote de aplicativos.

FEITO

Deepak Sharma
fonte
1
Isso funciona, mas você também deve refatorar o nome do pacote da pasta src base.
ashishduh
6

A maneira mais rápida de fazer isso no Android Studio 1.3 :

  1. Mude o nome do pacote no diretório manifest
  2. Vá para Module Settings[F4]-> Flavors, Application Idescreva o mesmo nome.
  3. Crie um novo pacote com esse nome: [right-click-> new-> package]
  4. Selecione todos os arquivos java do seu projeto e prossiga [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Se você não seguir essa ordem, poderá alterar todos os arquivos java um a um com novas importações e vários erros de tempo de compilação, portanto, a ordem é muito importante.

Movsar Bekaev
fonte
1
Com esse método, o R permanece inalterado pela refatoração. assim importar mudança com.app.myapp.R não para o novo nome do pacote, e você tem que tomar um por um ...
OWADVL
@OWADVL, R muda automaticamente quando você move arquivos para o novo pacote, o Android Studio executa automaticamente a reconstrução quando você move arquivos .java, faço isso todos os dias e, desde que eu mantenha essa ordem, nunca mudo nada nos arquivos .java manualmente
Movsar Bekaev
Porém, no Eclipse, podemos alterar o ID do pacote de aplicativos, sem alterar o pacote de todo o código. O assistente renomeará as referências BuildConfig & R para você. Estou intrigado que a mesma coisa não exista no AS.
Tom
5

Mudar o nome do pacote é um pé no saco. Parece que métodos diferentes funcionam para pessoas diferentes. Minha solução é rápida e sem erros. Parece que não é necessário limpar ou redefinir o eclipse.

  1. Clique com o botão direito do mouse no nome do pacote e depois em Refrator> Renomear.
  2. Clique com o botão direito do mouse no nome do projeto Ferramentas Android> Renomear Pacote de Aplicativos.
  3. Defina manualmente os nomes dos pacotes no manifesto que não foram alterados pelas etapas anteriores.
erdomester
fonte
3

Bernstein possui o método, use a ferramenta Eclipse, "Renomear Pacote de Aplicativos", talvez seja necessário fazer uma limpeza mesmo após o fato. Além disso, o Eclipse às vezes perde o controle quando você faz alterações em um projeto. Pode ser necessário usar a ferramenta "Limpar projeto" (no menu "Projeto".) Se isso não funcionar, talvez seja necessário fechar e reiniciar o Eclipse. Soluções Voo-doo, mas o Eclipse pode ser assim.

m0j0
fonte
3

Eu achei a solução mais fácil foi usar o Regexxer para substituir "com.package.name" por "com.newpackage.name" e renomeie os diretórios corretamente. Super fácil, super rápido.

robisaks
fonte
3
  1. Primeiro, mude o nome do pacote no arquivo de manifesto
  2. Re-fatore> Renomeie o nome do pacote na srcpasta e marquerename subpackages
  3. Isso é tudo o que você fez.
Sathirar
fonte
Tentei usar o Android Tools de Marc Bernstein-> Renomear pacote de aplicativos, mas isso me deu um erro. Este foi mais simples, embora eu tive que corrigir algumas coisas após a mudança
david-Hoze
2

Também há outra solução para usuários sem Eclipse: basta alterar o atributo do pacote na tag <manifest> no AndroidManifest.xml, substituindo o nome antigo do pacote usado por um novo. Nota: Você também deve ajustar manualmente todas as instruções de importação e pastas relacionadas relacionadas ao seu projeto.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>
Gosto de voce
fonte
1

Alternativo:

  1. Abra AndroidManifest.xml
  2. Altere package = "NEW NAME" na tag do manifesto.
MapleLover
fonte
1
  1. Clique com o botão direito do mouse em Projeto> Ferramentas Android> Renomear Pacote de Aplicativos

  2. Vá para src e clique com o botão direito do mouse em seu pacote principal> Refatorar> Renomear

  3. Vá para o arquivo de manifesto e altere o nome do seu pacote.

ritesh4326
fonte
1

Acabei de perder algumas horas tentando todas as soluções. Eu tinha certeza, o problema está no meu código - o apk inicia, mas alguns erros ao trabalhar com diferentes classes e atividades.

A única maneira de trabalhar com o meu projeto:

  1. renomeá-lo - arquivo / renomear e marque todas as caixas de seleção
  2. verifique se há lugares não renomeados, eu tinha em um dos nomes antigos de layout ainda nas ferramentas: context = "..
  3. criar novo espaço de trabalho
  4. importar projeto para um novo espaço de trabalho

Para mim, funciona, única solução.

Dudeist
fonte
1

Então, usando o IntelliJ com o plug-in Android (Studio) foi: Eu subi AndroidManifest.xmle mudei o nome do pacote clicando com o botão direito do mouse em -> Refatorar -> renomear. Nosso nome de pacote então tinha quatro partes a.b.c.d, a nova apenas a.b.c. Então, renomeei os três primeiros. Depois fui para o diretório das fontes geradas ( app\build\generated\source\r\development\debug\a\b\c\d), clicou com o botão direito do mouse na Rclasse e Refatorou-> Mova [d] para um pacote superior. Mesmo com BuildConfigno app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Usando Refactor-> Move, o IntelliJ atualiza todas as referências para BuildConfige R.

Finalmente, atualizei todos os applicationId [s] que encontrei no gradle.build que encontrei. Eu bati Projeto Limpo, Faça e Reconstrua Projeto. Excluiu o aplicativo do meu telefone e pressione "Play". Tudo funcionou, então a refatoração foi fácil e rápida.

Raul Pinto
fonte
1

No Android Studio 1.2.2, diga se você deseja alterar com.example.myapppara org.mydomain.mynewapp Você pode seguir as etapas em cada um dos diretórios, conforme exibido na captura de tela abaixo. Ele fornecerá a opção de visualização para que você possa visualizar antes de fazer alterações.

Vá para Refactor -> Renamee dê seu novo nome. Você deve fazer isso para cada uma das pastas, por exemplo, com, example e myapp. Ele atualizará automaticamente as importações para que você não precise se preocupar com isso. insira a descrição da imagem aqui

Atualize também o arquivo build.gradleque não é atualizado automaticamente.

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Depois disso, ele pedirá para syncfazê-lo. Então tudo ficará bem. Depois disso, posso enviar meu APK para a loja do Google. Verifique se você assinou seu aplicativo para enviá-lo para a loja.

Krishnadas PC
fonte
0
  1. No seu estúdio Android, no painel do projeto, existe o ícone de roda dentada "Clique nele".
  2. Desmarque os pacotes médios vazios compactos
  3. Agora o diretório do pacote foi quebrado, ou seja, diretórios individuais.
  4. Selecione o diretório que você deseja renomear.
  5. Clique com o botão direito do mouse nesse diretório específico.
  6. Selecione refatorar e renomeie a opção.
  7. A caixa de diálogo foi aberta, renomeie-a.
  8. Depois de colocar um novo nome, clique em Refatorar.
  9. Em seguida, clique em Do Refactor na parte inferior.
  10. Em seguida, o android studio atualizará todas as alterações.
  11. Agora abra o arquivo build.gradle e atualize o applicationId e sincronize-o.
  12. Agora vá ao arquivo de manifesto e renomeie o pacote.
  13. Reconstrua seu projeto.
  14. Você terminou :)
Hanisha
fonte