Изменение имени пакета для Android в React Native
Я использовал react-native init MyApp
для инициализации нового приложения React Native.
Это создало среди других проект Android с пакетом com.myapp
.
Какой лучший способ изменить имя этого пакета, например: com.mycompany.myapp
?
Я попытался изменить его в AndroidManifest.xml
, но он создал другие ошибки, поэтому я предполагаю, что это не так.
Любая идея?
Ответы
Ответ 1
Я изменил имя подпапки проекта с: "android/app/src/main/java/MY/APP/OLD_ID/" на: "android/app/src/main/java/MY/APP/NEW_ID/"
Затем вручную переключаем старый и новый идентификаторы пакетов:
В: Android/приложение /SRC/Main/Java/MY/APP/NEW_ID/MainActivity.java:
package MY.APP.NEW_ID;
В Android/app/src/main/java/MY/APP/NEW_ID/MainApplication.java:
package MY.APP.NEW_ID;
В android/app/src/main/AndroidManifest.xml:
package="MY.APP.NEW_ID"
И в android/app/build.gradle:
applicationId "MY.APP.NEW_ID"
(Необязательно) В Android/App/BUCK:
android_build_config(
package="MY.APP.NEW_ID"
)
android_resource(
package="MY.APP.NEW_ID"
)
Очистка Gradle 'в конце (в папке /android):
./gradlew clean
Ответ 2
Я использую пакет response-native-rename npm.
Установите с помощью
npm install react-native-rename -g
Затем из корня вашего проекта React Native выполните следующие
react-native-rename "MyApp" -b com.mycompany.myapp
response-native-rename на npm
Ответ 3
Чтобы изменить имя пакета с com.myapp на: com.mycompany.myapp (например),
- Для приложения iOS из приложения реагирования используйте xcode - под общим.
-
Для приложения Android откройте build.gradle на уровне модуля. Тот, что в папке Android/приложения. Ты найдешь
... defaultConfig { applicationId com.myapp... }...
Измените "com.myapp" на все, что вам нужно.
Надеюсь это поможет.
Ответ 4
Вы можете просто использовать пакет response-native-rename npm.
Установить с помощью
npm install react-native-rename -g
Затем из корня вашего проекта React Native выполните следующее
react-native-rename "MyApp" -b com.mycompany.myapp
react-native-rename on npm
но обратите внимание, что эта MainActivity.java
удаляет ваши MainActivity.java
и MainApplication.java
. перед изменением имени вашего пакета сделайте резервную копию этих двух файлов и, после изменения имени пакета, просто верните его на место. это решение работает для меня
больше информации: Reaction-native-переименовать
Ответ 5
Goto Android studio
Щелкните правой кнопкой мыши по вашему пакету (скорее всего, com) → Refractor → Rename → Введите имя нового пакета в диалоговом окне → Do Refractor
Он будет переименовывать название вашего пакета везде.
Ответ 6
Сценарий инициализации генерирует уникальный идентификатор для Android на основе имени, которое вы ему дали (например, com.acmeapp
для AcmeApp
).
Чтобы узнать, какое имя было сгенерировано, android/app/build.gradle
ключ applicationId в android/app/build.gradle
.
Если вам нужно изменить этот уникальный идентификатор, сделайте это сейчас, как описано ниже:
В папке /android
замените все вхождения com.acmeapp
на com.acme.app
Затем измените структуру каталогов с помощью следующих команд:
mkdir android/app/src/main/java/com/acme
mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app
Вам нужен уровень папки для каждой точки в идентификаторе приложения.
Источник: https://blog.elao.com/ru/dev/from-react-native-init-to-app-stores-real-quick/
Ответ 7
Если вы используете Android Studio-
изменение com.myapp
на com.mycompany.myapp
-
создайте новую иерархию пакетов com.mycompany.myapp под android/app/src/main/java
-
Скопируйте все классы из com.myapp
в com.mycompany.myapp
с помощью графического интерфейса Android-студии
-
Студия Android позаботится о том, чтобы название подходящего пакета было указано для всех скопированных классов. Это полезно, если у вас есть несколько пользовательских модулей и вы не хотите вручную заменять все файлы .java.
-
Обновите android/app/src/main/AndroidManifest.xml
и android/app/build.gradle
(замените com.myapp
на com.mycompany.myapp
-
Синхронизировать проект (сборка Gradle)
Ответ 8
У меня есть решение, основанное на ответе @Cherniv (работает на macOS для меня). Два отличия: у меня есть файл Main2Activity.java в папке java, с которым я делаю то же самое, и я не беспокоюсь о вызове. /gradlew clean, так как кажется, что этот пакет-ответчик делает это автоматически в любом случае.
В любом случае, мое решение делает то, что делает Cherniv, за исключением того, что я создал оболочку bash script для него, так как я создаю несколько приложений с помощью одного набора кода и хочу иметь возможность легко изменять имя пакета всякий раз, когда я запустите мои сценарии npm.
Вот bash script, который я использовал. Вам нужно будет изменить имя пакета, которое вы хотите использовать, и добавить все, что вы хотите, но вот основные сведения. Вы можете создать файл .sh, дать разрешение, а затем запустить его из той же папки, в которой вы запускаете response-native из:
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 файла. В комментарии есть слово "пакет". Из-за того, как работает script, он принимает любую строку со словом "package" в ней и заменяет ее. Из-за этого этот script не может быть проверен будущим, так как может быть то же самое слово, которое используется где-то еще.
Second Disclaimer: первые 3 команды sed редактируют java файлы из каталога javaFiles. Я создал этот каталог сам, так как я хочу иметь один набор java файлов, которые были скопированы оттуда (так как я мог бы добавить в него новые пакеты в будущем). Возможно, вы захотите сделать то же самое. Поэтому скопируйте все файлы из папки java (перейдите в его подпапки, чтобы найти фактические java файлы) и поместите их в новую папку с именем javaFiles.
Третий отказ: вам нужно будет изменить переменную packageName, чтобы она соответствовала путям вверху script и внизу (com.MyWebsite.MyAppName для com/MyWebsite/MyAppName)
Ответ 9
Следуйте простым шагам, чтобы переименовать app name
вашего app name
Package name
если вы не сделали никаких пользовательских изменений в папке Android (т.е. сценарий, в котором вы только что инициализировали проект)
- Просто измените
name
в файле package.json
и сохраните его. - Удалить папку с именем Android
- Запустите команду "
react-native upgrade
Примечание. Как указано в комментарии в ivoteje50, не удаляйте папку android, если вы уже выполнили официальные инструкции по созданию хранилища ключей, так как она удалит хранилище ключей и вы не сможете снова подписать новое приложение.
Ответ 10
В VS Code нажмите Ctrl + Shift + F
введите имя старого пакета в "Найти" и введите новый пакет в "Заменить". Затем нажмите "Заменить все вхождения".
Определенно не прагматичный путь. Но это помогло мне.
Ответ 11
Перейти к файлу android/app/src/main/AndroidManifest.xml -
Обновление:
attr android: label приложения :
Старое значение - android: label = "@string/app_name"
Новое значение - android: label = "(строка, которую вы хотите поставить)
и
attr android: label элемента активность как:
Старое значение - android: label = "@string/app_name"
Новое значение - android: label = "(строка, которую вы хотите поставить)
Работал для меня, надеюсь, это поможет.