Cambia il nome del pacchetto per Android in React Native


179

Ho usato react-native init MyAppper inizializzare una nuova Reagire app nativa. Questo ha creato tra l'altro un progetto Android con il pacchetto com.myapp.

Qual è il modo migliore per cambiare il nome di questo pacchetto, ad esempio: com.mycompany.myapp :?

Ho provato a cambiarlo AndroidManifest.xml ma ha creato altri errori, quindi presumo che non sia il modo.

Qualche idea?


Fare clic con il tasto sinistro del mouse sul nome del pacchetto e selezionare Refactor -> Rinomina opzione per rinominare il nome del pacchetto.
Kunun,

Ciò che funziona meglio per me ora è solo trovare e sostituire
mllm

3
Puoi anche provare questo saumya.github.io/ray/articles/72
Andy il


per me cerca e sostituisci ha funzionato
shesh nath,

Risposte:


411

Ho rinominato la sottocartella del progetto da: " android / app / src / main / java / MY / APP / OLD_ID / " in: " android / app / src / main / java / MY / APP / NEW_ID / "

Quindi hai cambiato manualmente i vecchi e i nuovi ID pacchetto:

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

package MY.APP.NEW_ID;

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

package MY.APP.NEW_ID;

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

package="MY.APP.NEW_ID"

E in android / app / build.gradle :

applicationId "MY.APP.NEW_ID"

In Android / app / BUCK :

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

Grado 'pulizia alla fine (nella cartella / android ):

./gradlew clean

23
Devo anche modificare il file BUCK per sostituire il vecchio valore del pacchetto con quello nuovo. A proposito, i 2 file MainAcitivity.java e MainApplication.java dovrebbero essere trasferiti nel nuovo percorso fisico.
Pollice d'oro,

4
Ho anche rinominato la directory android/app/src/main/java/com/old_app_name/in ...com/new_app_name/e sembra funzionare.
nicholas

Ho avuto l'errore "Impossibile finalizzare la sessione: INSTALL_FAILED_UPDATE_INCOMPATIBLE" fino a quando non ho forzato manualmente la pulizia del simulatore del dispositivo Android: adb disinstalla my.package.name ... Quindi le indicazioni vanno bene, ma il simulatore Android può "aggrapparsi" alle vecchie informazioni in un brutto modo che fa sembrare che le indicazioni non funzionino. (E semplicemente disinstallare l'app NON ha risolto questo problema!)
Bill Patterson l'

Stavo leggendo questo e ho provato questa libreria: npmjs.com/package/react-native-rename sembra funzionare abbastanza bene per questo, non solo rinomina l'app ma può anche cambiare l'identificatore del bundle
fray88

1
fallo in android / cartella @Anuj
Cherniv

76

Uso il pacchetto reagire-nativo-rinominare * npm. Installalo tramite

npm install react-native-rename -g

Quindi, dalla radice del tuo progetto React Native, esegui quanto segue:

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

questo è semplice e difficile, ho solo bisogno di aggiornare manualmente MainApplication.java.
Gopal Devra,

59
Grazie, ha rotto il progetto
Leap Hawk,

@AkashRajput hai risolto il tuo problema? facci sapere se hai trovato una soluzione
Saleem Khan,

@SaleemKhan Ha dovuto creare nuovamente il progetto. Questa volta con init native-reazioni .. Basta copiare i file.
Leap Hawk,

5
Ha rotto il mio progetto e ha dovuto creare un nuovo progetto :(
MujtabaFR,

24

Per modificare il nome del pacchetto da com.myappa: com.mycompany.myapp(ad esempio),

  1. Per l'app iOS dell'app di reazione, usa xcode - in generale.
  2. Per l'app Android, apri build.gradle a livello di modulo. Quello nella android/appcartella. Troverai
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

Cambia quello com.myappdi cui hai bisogno.

Spero che questo ti aiuti.


4
Questo è il modo più semplice per cambiare il nome del pacchetto. Tuttavia, non cambiando il nome del pacchetto locale, questo cambierà il tuo prossimo pacchetto di build. Grazie! Dopo aver fatto questo, fai ./gradlew cleane poi ./gradlew app:assembleRelease.
Michael Harley,

2
"Tuttavia, il nome applicationIde il packagenome locale sono indipendenti l'uno dall'altro", " applicationIdidentifica in modo univoco l'app sul dispositivo e nel Google Play Store" - developer.android.com/studio/build/application-id
eightyfive

non funziona per meNo matching client found for package name 'xxxxx'
MichaelMao,

10

puoi semplicemente usare il pacchetto npm di reazioni-nativo-rinomina.

Installa usando

npm install react-native-rename -g

Quindi dalla radice del tuo progetto React Native esegui quanto segue

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

react-native-rename on npm

ma nota che questa lib rimuove il tuo MainActivity.javae MainApplication.java. prima di modificare il nome del pacchetto, eseguire un backup da questi due file e, dopo aver modificato il nome del pacchetto, rimetterlo al loro posto. questa soluzione funziona per me

maggiori informazioni: reazioni-rinominare-nativo


1
Nessun effetto se non cambi il nome dell'app "Prova con un altro nome".
Made in Moon,

1
in realtà, provo un nome diverso per il mio progetto. ma quando cambio il nome del mio progetto reazioni-nativo-rinomina rimuove quei due file dal mio progetto.
Moein Hosseini,

8

Vai a Android Studio

Fare clic con il tasto destro del mouse sul pacchetto (molto probabilmente com) -> Rifrattore -> Rinomina -> Immettere il nome del nuovo pacchetto nella finestra di dialogo -> Effettua rifrattore

Rinominerà il nome del tuo pacchetto ovunque.


Immagino che non influirà sull'intera struttura del progetto.
Kishan Oza,

Come si può fare con il progetto React-Native JS?
Arifur Rahman,

8

Lo script init genera un identificatore univoco per Android basato sul nome che gli hai dato (ad esempio com.acmeappper AcmeApp).

Puoi vedere quale nome è stato generato cercando il tasto applicationId android/app/build.gradle.

Se devi modificare quell'identificatore univoco, fallo ora come descritto di seguito:

Nella /androidcartella, sostituire tutte le occorrenze com.acmeappdacom.acme.app

Quindi modificare la struttura della directory con i seguenti comandi:

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

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

È necessario un livello di cartella per ciascun punto nell'identificatore dell'app.

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


7

Se stai usando Android Studio-

cambiando com.myappincom.mycompany.myapp

  1. crea una nuova gerarchia di pacchetti com.mycompany.myapp in android/app/src/main/java

  2. Copiare tutte le classi da com.myappa com.mycompany.myapputilizzare Studio GUI Android

  3. Android Studio si occuperà di mettere il nome del pacchetto adatto per tutte le classi copiate. Ciò è utile se si dispone di alcuni moduli personalizzati e non si desidera sostituire manualmente in tutti i file .java.

  4. Aggiorna android/app/src/main/AndroidManifest.xmle android/app/build.gradle(sostituisci com.myappacom.mycompany.myapp

  5. Sincronizza il progetto (gradle build)


5

Ho una soluzione basata sulla risposta di @Cherniv (funziona su macOS per me). Due differenze: ho un Main2Activity.java nella cartella java a cui faccio la stessa cosa, e non mi preoccupo di chiamare ./gradlew clean dal momento che sembra che il packager di reazione nativo lo faccia comunque automaticamente.

Ad ogni modo, la mia soluzione fa quello che fa Cherniv, tranne per il fatto che ho creato uno script bash shell dal momento che sto creando più app utilizzando un set di codice e voglio poter cambiare facilmente il nome del pacchetto ogni volta che eseguo i miei script npm.

Ecco lo script bash che ho usato. Dovrai modificare il nome del pacchetto che desideri utilizzare e aggiungere qualsiasi altra cosa tu voglia ... ma ecco le basi. È possibile creare un file .sh, autorizzare e quindi eseguirlo dalla stessa cartella da cui si esegue reagisce-nativo da:

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

NOTA BENE: dovrai prima modificare il commento di MainApplication.java nella parte inferiore del file java. Ha la parola "pacchetto" nel commento. A causa di come funziona lo script, prende ogni riga con la parola 'pacchetto' in esso e lo sostituisce. Per questo motivo, questo script potrebbe non essere a prova di futuro in quanto potrebbe esserci la stessa parola usata altrove.

Secondo disclaimer: i primi 3 comandi sed modificano i file java da una directory chiamata javaFiles. Ho creato questa directory da solo poiché voglio avere un set di file java che vengono copiati da lì (poiché potrei aggiungere nuovi pacchetti in futuro). Probabilmente vorrai fare la stessa cosa. Quindi copia tutti i file dalla cartella java (passa attraverso le sue sottocartelle per trovare i file java effettivi) e inseriscili in una nuova cartella chiamata javaFiles.

Terzo disclaimer: dovrai modificare la variabile packageName in modo che sia in linea con i percorsi nella parte superiore dello script e in basso (com.MyWebsite.MyAppName in com / MyWebsite / MyAppName)


2

In VS Code, premere Ctrl + Shift + Fe inserire il nome del vecchio pacchetto in "Trova" e inserire il nuovo pacchetto in "Sostituisci". Quindi premere 'Sostituisci tutte le occorrenze'.

Sicuramente non nel modo pragmatico. Ma ha fatto il trucco per me.


2

Uso npx react-native-rename <newName>

Con identificativo bundle personalizzato (solo Android. Per iOS, utilizzare Xcode)

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

Innanzitutto, passa al nuovo ramo (facoltativo ma consigliato)

$ git checkout -b rename-app

Quindi, rinomina la tua app $ npx reazioni-nativa-rinomina "App di viaggio"

Con identificativo bundle personalizzato

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

Dopo aver cambiato il nome, assicurati di andare nella cartella Android ed eseguire gradlew clean. quindi tornare al progetto principale ed eseguire npx react-native run-android.

Inoltre, se hai un file google-services.json nel tuo progetto precedente, cambia di conseguenza con quello nuovo ... allora sei a posto :)

Vedi di più qui https://github.com/junedomingo/react-native-rename#readme


1

Segui i semplici passaggi per rinominare il tuo app namee Package namenel caso in cui non hai apportato modifiche personalizzate nella cartella Android (es. Scenario in cui hai appena inizializzato il progetto)

  1. Basta cambiare la namenel package.jsonfile di cui hai bisogno e salvarlo.
  2. Rimuovi la cartella denominata android
  3. esegui il comando react-native upgrade

Nota: come indicato in ivoteje50 nel commento, non rimuovere la cartella Android se hai già seguito le istruzioni ufficiali per generare un keystore, poiché rimuoverà il keystore e non potrai più firmare una nuova app.


1
Non rimuovere la cartella Android se hai già seguito le istruzioni ufficiali per generare un keystore, poiché rimuoverà il keystore e non potrai più firmare una nuova app.
Ivotje50,

2
Non farlo! Potresti avere tonnellate di codice personalizzato nel codice Android che non verrà ricreato
pie6k,

1

Vai su Android Studio, apri l'app, fai clic con il tasto destro su Java e scegli Nuovo, quindi Pacchetto.

Dai il nome che desideri (es. Com.something).

Spostare i file dall'altro pacchetto (che si desidera rinominare) nel nuovo pacchetto. Elimina il vecchio pacchetto.

Vai al tuo progetto nel tuo editor e usa il collegamento per cercare in tutti i file (su mac è shift cmd F). Digita il nome del tuo vecchio pacchetto. Cambia tutti i riferimenti al nuovo nome del pacchetto.

Vai su Android Studio, Build, Clean Project, Rebuild Project.

Fatto!

Buona programmazione :)


1

Ho usato il pacchetto reagire-nativo-rinominare .

Nel terminale eseguire il comando per installare:

npm install react-native-rename -g

Nella radice del progetto React Native, esegui il comando seguente:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

0

È possibile utilizzare il pacchetto di reazione-nativo-rinominazione che prenderà tutte le modifiche necessarie del nome del pacchetto in

app / mainapplication.java

AndroidManifest.xml

ma assicurati di cambiare manualmente il nome del pacchetto di tutti i file nella cartella java / com. perché quando ho creato un'attività schermata iniziale il vecchio nome del pacchetto non viene aggiornato.

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


0

Semplicemente usando lo strumento di ricerca e sostituzione del mio IDE ha fatto il trucco.


0

Dopo aver eseguito questo:

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

Assicurati di goto anche Build.gradlesotto android/app/... e rinominare l'applicazione Id come illustrato di seguito:

defaultConfig {
        applicationId:com.appname.xxx
........
}

-3

Vai al file android / app / src / main / AndroidManifest.xml -

Aggiornare :

attr android: label di Element applicazione come:

Vecchio valore - android: label = "@ string / app_name"

Nuovo valore - android: label = "(stringa che vuoi mettere)"

e

attr android: label di Element attività come:

Vecchio valore - android: label = "@ string / app_name"

Nuovo valore - android: label = "(stringa che vuoi mettere)"

Ha funzionato per me, si spera che possa aiutare.


2
Onestamente, non credo che questa risposta avrebbe dovuto essere ridimensionata tanto quanto lo è stata. Tuttavia, questa risposta non non affrontare ciò che è stato chiesto per la questione - come cambiare il nome del pacchetto . Tuttavia, risponde alla domanda "come modificare il titolo dell'app che appare nel programma di avvio". È una risposta pertinente? Non proprio. Contiene informazioni utili? Sì. Pertanto, ti suggerisco di trovare una domanda che ponga sul titolo del programma di avvio e pubblicare la tua soluzione invece che qui.
Dev-iL
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.