У меня есть решение, основанное на ответе @ Cherniv (у меня работает на macOS). Два отличия: у меня есть файл Main2Activity.java в папке java, с которым я делаю то же самое, и я не беспокоюсь о том, чтобы вызывать ./gradlew clean, поскольку кажется, что пакетный пакет реагирует автоматически в любом случае.
В любом случае, мое решение делает то же, что и Чернив, за исключением того, что я создал для него сценарий оболочки bash, поскольку я создаю несколько приложений с использованием одного набора кода и хочу иметь возможность легко изменять имя пакета всякий раз, когда я запускаю свои сценарии npm.
Вот скрипт bash, который я использовал. Вам нужно будет изменить имя_пакета, которое вы хотите использовать, и добавить в него все, что вы хотите ... но вот основы. Вы можете создать файл .sh, дать разрешение, а затем запустить его из той же папки, из которой вы запускаете реактив:
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
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Вам нужно сначала отредактировать комментарий MainApplication.java в нижней части файла Java. В комментарии есть слово «пакет». Из-за того, как работает скрипт, он берет любую строку со словом «пакет» и заменяет ее. Из-за этого этот сценарий не может быть проверен на будущее, поскольку это же слово может быть использовано где-то еще.
Второй отказ от ответственности: первые 3 команды sed редактируют файлы java из каталога с именем javaFiles. Я создал этот каталог сам, так как хочу иметь один набор java-файлов, которые будут скопированы оттуда (так как я мог бы добавить в него новые пакеты в будущем). Вы, вероятно, захотите сделать то же самое. Поэтому скопируйте все файлы из папки java (просмотрите ее подпапки, чтобы найти фактические файлы java) и поместите их в новую папку с именем javaFiles.
Третий отказ от ответственности: вам нужно отредактировать переменную packageName, чтобы она соответствовала путям в верхней части скрипта и внизу (com.MyWebsite.MyAppName в com / MyWebsite / MyAppName)