Подтвердить что ты не робот

Изменение имени пакета для Android в React Native

Я использовал react-native init MyApp для инициализации нового приложения React Native. Это создало среди других проект Android с пакетом com.myapp.

Какой лучший способ изменить имя этого пакета, например: com.mycompany.myapp?

Я попытался изменить его в AndroidManifest.xml, но он создал другие ошибки, поэтому я предполагаю, что это не так.

Любая идея?

4b9b3361

Ответ 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 (например),

  1. Для приложения iOS из приложения реагирования используйте xcode - под общим.
  2. Для приложения 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

  1. создайте новую иерархию пакетов com.mycompany.myapp под android/app/src/main/java

  2. Скопируйте все классы из com.myapp в com.mycompany.myapp с помощью графического интерфейса Android-студии

  3. Студия Android позаботится о том, чтобы название подходящего пакета было указано для всех скопированных классов. Это полезно, если у вас есть несколько пользовательских модулей и вы не хотите вручную заменять все файлы .java.

  4. Обновите android/app/src/main/AndroidManifest.xml и android/app/build.gradle (замените com.myapp на com.mycompany.myapp

  5. Синхронизировать проект (сборка 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 (т.е. сценарий, в котором вы только что инициализировали проект)

  1. Просто измените name в файле package.json и сохраните его.
  2. Удалить папку с именем Android
  3. Запустите команду " 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 = "(строка, которую вы хотите поставить)

Работал для меня, надеюсь, это поможет.