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)