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



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



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



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



есть идеи?

718   9  

9 ответов:

Я изменил имя вложенной папки проекта:"андроид/приложение/src/главная/Java/мой/приложение/OLD_ID/ " to:"андроид/приложение/src/главная/Java/мой/приложение/переменной new_id/"

затем вручную переключил старые и новые идентификаторы пакетов:

In: андроид/приложение/src/главная/Java/мой/приложение/переменной 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;

на 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

Я использую реагировать родной переименовать npm пакет.

установить с помощью

npm install react-native-rename -g

затем из корня вашего проекта React Native выполните следующее

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

react-native-переименовать на npm

Goto Android studio

щелкните правой кнопкой мыши ваш пакет (скорее всего com) - > рефрактор - > переименовать - > введите новое имя пакета в диалоговом окне - > сделать рефрактор

Он будет переименовывать имя пакета везде.

если вы используете Android Studio -

изменение com.myapp до com.mycompany.myapp

  1. создать новую иерархию пакетов com.название_компании.приложение под android/app/src/main/java

  2. скопировать все классы com.myapp до com.mycompany.myapp С помощью Android studio GUI

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

  4. обновление android/app/src/main/AndroidManifest.xml и android/app/build.gradle (вместо com.myapp до com.mycompany.myapp

  5. синхронизация проекта (gradle build)

чтобы изменить имя пакета из com.приложение к: ком.название_компании.приложение (к примеру),

  1. для приложения iOS приложения react используйте xcode-под общим.
  2. для приложения android откройте сборку.gradle на уровне модуля. Тот, что в папке android/app. Вы найдете

    ... defaultConfig { applicationId com.myapp ... } ...

изменить " com.myapp " на все, что вам нужно.

надеюсь, что это помогает.

У меня есть решение, основанное на ответ @Черневе (работает на macOS для меня). Два отличия: у меня есть Main2Activity.java в папке java, с которой я делаю то же самое, и я не беспокоюсь о вызове ./gradlew чистый, так как кажется, что react-native packager делает это автоматически в любом случае.

в любом случае, мое решение делает то, что делает Чернов, за исключением того, что я сделал сценарий оболочки bash для него, так как я создаю несколько приложений с использованием одного набора кода и хочу иметь возможность легко изменить имя пакета всякий раз, когда я запускаю свои сценарии npm.

вот сценарий bash, который я использовал. Вам нужно будет изменить имя пакета, которое вы хотите использовать, и добавить к нему все, что вы хотите... но вот основы. Вы можете создать файл .sh, дать разрешение, а затем запустить его из той же папки, из которой вы запускаете react-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 сначала. Он имеет слово "пакет" в комментарии. Из-за того, как работает скрипт, он берет любую строку со словом "пакет" в ней и заменяет ее. Из-за этого этот сценарий может быть не проверен в будущем, поскольку это же слово может использоваться где-то еще.

второй отказ от ответственности: первые 3 команды sed редактируют файлы java из каталога, называемого javaFiles. Я сам создал этот каталог, так как я хочу иметь один набор java-файлов, которые копируются оттуда (поскольку я могу добавить в него новые пакеты в будущем). Вы, вероятно, захотите сделать то же самое. Поэтому скопируйте все файлы из папки java (просмотрите ее подпапки, чтобы найти фактические файлы java) и поместите их в новую папку под названием javaFiles.

третий отказ от ответственности: вам нужно будет отредактировать переменную packageName, чтобы она соответствовала путям в верхней части сценария и внизу (com.Мой сайт.MyAppName to com/MyWebsite / MyAppName)

скрипт init генерирует уникальный идентификатор для Android на основе имени, которое вы ему дали (например,com.acmeapp на AcmeApp).

вы можете увидеть, какое имя было сгенерировано путем поиска ключа applicationId в android/app/build.gradle.

Если вам нужно изменить этот уникальный идентификатор, сделайте это сейчас, как описано ниже:

на заменить все вхождения com.acmeapp by 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/en/dev/from-react-native-init-to-app-stores-real-quick/

выполните простые шаги, чтобы переименовать ваш app name и Package name

  1. просто изменить name на package.json как вам нужно и сохраните его.
  2. удалите папку с именем android
  3. выполнить команду react-native upgrade

выберите файл 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="(строка, которую вы хотите поместить)"

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

Comments

    Ничего не найдено.