Alterar o nome do pacote para Android no React Native

179

Eu costumava react-native init MyAppinicializar um novo aplicativo React Native. Isso criou, entre outros, um projeto Android com o pacote com.myapp.

Qual é a melhor maneira de alterar este nome de pacote, por exemplo, para com.mycompany.myapp:?

Eu tentei alterá-lo, AndroidManifest.xmlmas ele criou outros erros, então estou assumindo que não é o caminho.

Qualquer ideia?

mllm
fonte
Clique com o botão esquerdo no nome do pacote e vá para a opção Refatorar -> Renomear para renomear o nome do pacote.
kunal
O que funciona melhor para mim agora é apenas encontrar e substituir
mllm
3
Você também pode tentar este saumya.github.io/ray/articles/72
Andy
tente isso também renomear pacote de aplicativos Android
c49 16/07/19
para mim pesquisar e substituir trabalhou #
shesh nath 28/08/19

Respostas:

411

Renomeei a subpasta do projeto de: " android / app / src / main / java / MY / APP / OLD_ID / " para: " android / app / src / main / java / MY / APP / NEW_ID / "

Em seguida, alterne manualmente os IDs de pacote novos e antigos:

Em: android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java :

package MY.APP.NEW_ID;

No android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java :

package MY.APP.NEW_ID;

No android / app / src / main / AndroidManifest.xml :

package="MY.APP.NEW_ID"

E no android / app / build.gradle :

applicationId "MY.APP.NEW_ID"

No android / app / BUCK :

android_build_config(
  package="MY.APP.NEW_ID"
)
android_resource(
  package="MY.APP.NEW_ID"
)

Gradle 'limpeza no final (na pasta / android ):

./gradlew clean
Cherniv
fonte
23
Também preciso editar o arquivo BUCK para substituir o valor do pacote antigo pelo novo. BTW, os 2 arquivos MainAcitivity.java e MainApplication.java devem ser realocados para o novo caminho físico.
Golden Thumb
4
Também renomei o diretório android/app/src/main/java/com/old_app_name/para ...com/new_app_name/e parece funcionar.
Nicholas
Eu tive o erro "Falha ao finalizar a sessão: INSTALL_FAILED_UPDATE_INCOMPATIBLE" até forçar manualmente a limpeza do simulador de dispositivos Android: adb uninstall my.package.name ... Portanto, as instruções são boas, mas o simulador Android pode "reter" as informações antigas em um mau caminho que faz parecer que as direções não funcionam. (E simplesmente desinstalar o aplicativo não corrigir isso!)
Bill Patterson
Eu estava lendo sobre isso e eu tentei esta biblioteca: npmjs.com/package/react-native-rename parece estar funcionando muito bem para isso, ele não se limita a mudar o nome do aplicativo, mas ele também pode alterar o identificador de conjunto
fray88
1
faça-o no android / pasta @Anuj
Cherniv
76

Eu uso o pacote react -native-rename * npm. Instale-o via

npm install react-native-rename -g

Em seguida, na raiz do seu projeto React Native, execute o seguinte:

react-native-rename "MyApp" -b com.mycompany.myapp
Javid Al Karuzi
fonte
simples e complicado, eu só preciso atualizar o MainApplication.java manualmente.
Gopal Devra
59
Graças, partiu o projeto
Leap Falcão
@AkashRajput você corrigiu seu problema? por favor deixe-nos saber se você encontrou qualquer solução
Saleem Khan
@SaleemKhan Teve que criar o projeto novamente. Desta vez, com o init react-native. Apenas copie os arquivos.
Leap Falcão
5
Ele quebrou o meu projeto e tive que criar um novo projeto :(
MujtabaFR
24

Para alterar o nome do pacote de com.myapppara: com.mycompany.myapp(por exemplo),

  1. Para o aplicativo iOS do aplicativo react, use xcode - em geral.
  2. Para o aplicativo Android, abra o build.gradle no nível do módulo. Aquele na android/apppasta. Você encontrará
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

Mude com.myapppara o que você precisar.

Espero que isto ajude.

Olusola Omosola
fonte
4
Essa é a maneira mais fácil de alterar o nome do seu pacote. Não alterando o nome do seu pacote local, isso mudará o seu próximo pacote de compilação. Obrigado! Depois de fazer isso, faça ./gradlew cleane depois ./gradlew app:assembleRelease.
Michael Harley
2
"No entanto, o nome applicationIde o local packagesão independentes um do outro", " applicationIdidentifica exclusivamente seu aplicativo no dispositivo e na Google Play Store" - developer.android.com/studio/build/application-id
oitenta
não funciona para mimNo matching client found for package name 'xxxxx'
MichaelMao
10

você pode simplesmente usar o pacote npm react-native-rename.

Instale usando

npm install react-native-rename -g

Em seguida, a partir da raiz do seu projeto React Native, execute o seguinte

react-native-rename "MyApp" -b com.mycompany.myapp

react-native-rename on npm

mas observe que essa lib remove seu MainActivity.javae MainApplication.java. antes de alterar o nome do pacote, faça um backup desses dois arquivos e, depois de alterar o nome do pacote, coloque-o novamente em seu lugar. esta solução funciona para mim

mais informações: react-native-rename

Moein Hosseini
fonte
1
Sem efeito se você não alterar o nome do aplicativo "Tente um nome diferente".
Feito na lua
1
na verdade, tento um nome diferente para o meu projeto. mas quando altero o nome do projeto, react-native-rename remove esses dois arquivos do meu projeto.
Moein Hosseini
8

Ir para o estúdio Android

Clique com o botão direito do mouse no seu pacote (provavelmente com) -> Refractor -> Renomear -> Digite o novo nome do pacote na caixa de diálogo -> Do Refractor

Ele renomeará o nome do seu pacote em qualquer lugar.

Aishwarya
fonte
Isso não afetará toda a estrutura do projeto, eu acho.
Kishan Oza
Como fazer com o projeto React-Native JS?
Arifur Rahman
8

O script init gera um identificador exclusivo para Android com base no nome que você deu (por exemplo, com.acmeapppara AcmeApp).

Você pode ver qual nome foi gerado procurando a chave applicationId android/app/build.gradle.

Se você precisar alterar esse identificador exclusivo, faça-o agora como descrito abaixo:

Na /androidpasta, substituir todas as ocorrências com.acmeappporcom.acme.app

Em seguida, altere a estrutura do diretório com os seguintes comandos:

mkdir android/app/src/main/java/com/acme

mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app

Você precisa de um nível de pasta para cada ponto no identificador do aplicativo.

Fonte: https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/

Atul Yadav
fonte
7

Se você estiver usando o Android Studio-

mudando com.myappparacom.mycompany.myapp

  1. crie uma nova hierarquia de pacotes com.mycompany.myapp em android/app/src/main/java

  2. Copie todas as classes de com.myapppara o com.mycompany.myappAndroid studio GUI

  3. O Android studio cuidará de colocar o nome do pacote adequado para todas as classes copiadas. Isso é útil se você possui alguns módulos personalizados e não deseja substituir manualmente em todos os arquivos .java.

  4. Atualize android/app/src/main/AndroidManifest.xmle android/app/build.gradle(substitua com.myappparacom.mycompany.myapp

  5. Sincronizar o projeto (gradle build)

Varun Kumar
fonte
5

Eu tenho uma solução baseada na resposta do @ Cherniv (funciona no macOS para mim). Duas diferenças: eu tenho um Main2Activity.java na pasta java à qual faço a mesma coisa e não me incomodo em chamar ./gradlew clean, pois parece que o empacotador nativo a reagir faz isso automaticamente de qualquer maneira.

De qualquer forma, minha solução faz o que o Cherniv faz, exceto que eu criei um script de shell bash para ele, pois estou criando vários aplicativos usando um conjunto de códigos e quero poder alterar facilmente o nome do pacote sempre que executo meus scripts npm.

Aqui está o script bash que eu usei. Você precisará modificar o packageName que deseja usar e adicionar qualquer outra coisa que desejar ... mas aqui estão os princípios básicos. Você pode criar um arquivo .sh, conceder permissão e, em seguida, executá-lo na mesma pasta em que o react-native é executado:

rm -rf ./android/app/src/main/java


mkdir -p ./android/app/src/main/java/com/MyWebsite/MyAppName
    packageName="com.MyWebsite.MyAppName"
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/Main2Activity.java
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainActivity.java
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainApplication.java
    sed -i '' -e "s/.*package=\".*/    package=\""$packageName"\"/" ./android/app/src/main/AndroidManifest.xml
    sed -i '' -e "s/.*package = '.*/  package = '"$packageName"',/" ./android/app/BUCK
    sed -i '' -e "s/.*applicationId.*/    applicationId \""$packageName"\"/" ./android/app/build.gradle

    cp -R ./android/app/src/main/javaFiles/ ./android/app/src/main/java/com/MyWebsite/MyAppName

AVISO LEGAL: Você precisará editar o comentário do MainApplication.java próximo à parte inferior do arquivo java. Tem a palavra 'pacote' no comentário. Por causa de como o script funciona, ele pega qualquer linha com a palavra 'pacote' e a substitui. Por esse motivo, esse script pode não estar preparado para o futuro, pois pode haver a mesma palavra usada em outro lugar.

Segunda isenção de responsabilidade: os três primeiros comandos sed editam os arquivos java de um diretório chamado javaFiles. Eu mesmo criei esse diretório, pois quero ter um conjunto de arquivos java que são copiados de lá (como eu poderia adicionar novos pacotes a ele no futuro). Você provavelmente vai querer fazer a mesma coisa. Então copie todos os arquivos da pasta java (percorra suas subpastas para encontrar os arquivos java reais) e coloque-os em uma nova pasta chamada javaFiles.

Terceiro aviso: você precisará editar a variável packageName para estar alinhada com os caminhos na parte superior do script e na parte inferior (com.MyWebsite.MyAppName para com / MyWebsite / MyAppName)

Kjell
fonte
2

No VS Code, pressione Ctrl + Shift + Fe digite o nome do seu pacote antigo em 'Localizar' e digite o seu novo pacote em 'Substituir'. Em seguida, pressione 'Substituir todas as ocorrências'.

Definitivamente não é o caminho pragmático. Mas, está feito o truque para mim.

Kiran JD
fonte
2

Usar npx react-native-rename <newName>

Com o Identificador de pacote personalizado (apenas Android. Para iOS, use o Xcode)

$ npx react-native-rename <newName> -b <bundleIdentifier>

Primeiro, mude para a nova ramificação (opcional, mas recomendável)

$ git checkout -b rename-app

Renomeie seu aplicativo $ npx react-native-rename "Travel App"

Com identificador de pacote personalizado

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 

Depois de alterar o nome, certifique-se de ir para a pasta android e executar gradlew clean. depois volte ao projeto principal e execute npx react-native run-android.

Além disso, se você tiver o arquivo google-services.json em seu projeto anterior, mude de acordo com o novo ... então você está pronto para ir :)

Veja mais aqui https://github.com/junedomingo/react-native-rename#readme

Farhad Kabir
fonte
1

Siga as etapas simples para renomear o seu app namee Package name, caso você não tenha feito alterações personalizadas na pasta android (ou seja, cenário em que você acabou de inicializar o projeto)

  1. Basta mudar o nameno package.jsonarquivo que você precisa e salvá-lo.
  2. Remova a pasta chamada android
  3. execute o comando react-native upgrade

Nota: Como ivoteje50 mencionado no comentário, não remova a pasta android se você já seguiu as instruções oficiais para gerar um keystore, pois ele removerá o keystore e você não poderá assinar um novo aplicativo novamente.

Jose Kj
fonte
1
Não remova a pasta android se você já seguiu as instruções oficiais para gerar um keystore, pois ele removerá o keystore e você não poderá assinar um novo aplicativo novamente.
Ivotje50
2
Não faça isso! Você pode ter toneladas de código personalizado no código do Android que não vai ser recriada
pie6k
1

Vá para o Android Studio, abra o aplicativo, clique com o botão direito do mouse em java e escolha Novo e depois em Pacote.

Dê o nome que você deseja (por exemplo, com.something).

Mova os arquivos do outro pacote (que você deseja renomear) para o novo pacote. Exclua o pacote antigo.

Vá para o seu projeto no seu editor e use o atalho para pesquisar em todos os arquivos (no mac é shift cmd F). Digite o nome do seu pacote antigo. Altere todas as referências para o novo nome do pacote.

Vá para o Android Studio, Build, Clean Project, Rebuild Project.

Feito!

Feliz codificação :)

Fotis Tsakiris
fonte
1

Eu usei o pacote react-native-rename .

No terminal, execute o comando para instalar:

npm install react-native-rename -g

Na raiz do seu projeto React Native, execute o seguinte comando:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp
Waqar UlHaq
fonte
0

Você pode usar o pacote react-native-rename, que fará todas as alterações necessárias no nome do pacote em

app / mainapplication.java

AndroidManifest.xml

mas lembre-se de alterar manualmente o nome do pacote de todos os arquivos na pasta java / com. porque quando eu criei uma atividade de tela inicial, o nome do pacote antigo não é atualizado.

https://www.npmjs.com/package/react-native-rename

Geetha Tulasi Balam
fonte
0

Basta usar a ferramenta de pesquisa e substituição do meu IDE.

Tenesse
fonte
0

Depois de executar isso:

react-native-rename "MyApp" -b com.mycompany.myapp

Certifique-se de também ir para Build.gradlebaixo android/app/... e renomear o ID do aplicativo, como mostrado abaixo:

defaultConfig {
        applicationId:com.appname.xxx
........
}
Newtoxton
fonte
-3

Vá para o arquivo android / app / src / main / AndroidManifest.xml -

Atualização:

attr android: label da aplicação Element como:

Valor antigo - android: label = "@ string / app_name"

Novo valor - android: label = "(string que você deseja colocar)"

e

attr android: etiqueta do elemento atividade como:

Valor antigo - android: label = "@ string / app_name"

Novo valor - android: label = "(string que você deseja colocar)"

Trabalhou para mim, espero que ajude.

Anshul Singh
fonte
2
Sinceramente, não acho que essa resposta deva ter sido rebaixada tanto quanto foi. No entanto, esta resposta não não resolver o que foi perguntado na questão - como alterar o nome do pacote . No entanto, ele responde à pergunta "como alterar o título do aplicativo que aparece no iniciador". É uma resposta relevante? Na verdade não. Contém informações úteis? Sim. Portanto, sugiro que você encontre uma pergunta que pergunte sobre o título do iniciador e publique sua solução lá em vez de aqui.
Dev-iL