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

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

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

Какая-нибудь идея?

Ответы (28)

Я переименовал подпапку проекта с "android/app/src/main/java/MY/APP/OLD_ID/" на: "android/app/src/src/main/java/MY/APP/NEW_ID/"

.

Затем вручную поменяйте местами идентификаторы старого и нового пакетов:

В: android/app/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"
)

Грамотная очистка в конце (в папке /android):

./gradlew clean

Перейдите к файлу android/app/src/main/AndroidManifest.xml -

.

Обновление:

attr android:label элемента application как :

Старое значение - android:label="@string/app_name"

Новое значение - android:label="(строка, которую вы хотите поместить)"

и

attr android:label элемента activity как :

Старое значение - android:label="@string/app_name"

Новое значение - android:label="(строка, которую вы хотите поместить)"

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

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

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

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

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

.

Перейдите в Android studio

Правой кнопкой мыши щелкните ваш пакет (скорее всего com)-> Refractor -> Rename -> Введите новое имя пакета в диалоге -> Do Refractor

Всегда будет переименовано имя вашего пакета.

Чтобы изменить имя пакета с com.myapp на: com.mycompany.myapp (например),

  1. Для приложения react для iOS используйте xcode - в разделе general.
  2. .
  3. Для приложения android откройте build.gradle на уровне модуля. Тот, что находится в папке android/app. Вы найдете
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

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

Надеемся, это поможет.

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

Вы можете узнать, какое имя было сгенерировано, найдя ключ 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/en/dev/from-react-native-init-to-app-stores-real-quick/

Вы можете просто использовать пакет npm react-native-rename.

Установка с помощью

npm install react-native-rename -g

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

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

react-native-rename на npm

Но обратите внимание, что эта библиотека удаляет ваши MainActivity.java и MainApplication.java. Перед изменением имени пакета сделайте резервную копию этих двух файлов, а после изменения имени пакета просто верните их на место. это решение работает для меня

больше информации: react-native-rename

Простое использование инструмента поиска и замены в моей IDE помогло.

очень простой способ :

cd /your/project/dir

запустите эту команду :

grep -rl "com.your.app" . | xargs sed -i 's/com.your.app/com.yournew.newapp/g'

переименуйте свою папку

android/app/src/main/java/com/your/app

изменить на

android/app/src/main/java/com/yournew/newapp

Перед изменением имени пакета react native сделайте резервную копию файлов MainActivity.java и MainApplication.java. Потому что эта библиотека удалит ваши MainActivity.java и MainApplication.java.

После этого вы можете просто использовать пакет react-native-rename npm.

.

Установка

npm install react-native-rename -g

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

react-native-rename "new_project_name" -b com.mycompany.newprojectname

.

И наконец, вы можете проверить новое имя пакета в AndroidManifest.xml. Не забудьте переименовать имя пакета в файлах MainActivity.java и MainApplication.java .

Спасибо.

После переименования названия пакета везде, из android studio. File -> Invalidate caches/Restart может исправить этот тип ошибок

это сработало для меня

Для изменения имени пакета необходимо отредактировать четыре файла в вашем проекте :

 1. android/app/src/main/java/com/reactNativeSampleApp/MainActivity.java
 2. android/app/src/main/java/com/reactNativeSampleApp/MainApplication.java
 3. android/app/src/main/AndroidManifest.xml
 4. android/app/build.gradle

Первые 2 файла имеют имя пакета, как показано ниже.

 package com.WHATEVER_YOUR_PACKAGE_NAME_IS;

Измените его на желаемое название пакета.

.
 package com.YOUR_DESIRED_PACKAGE_NAME;

Вам также необходимо изменить название пакета в двух других файлах.

  android/app/build.gradle

  android/app/src/main/AndroidManifest.xml

Примечание: если в вашем проекте есть файл google-services.json, то вам также нужно изменить имя пакета в этом файле.

.

После этого нужно очистить проект в ./gradlew.

.

Я предоставлю вам пошаговую процедуру.

Во-первых, нам нужно понять, зачем нам нужно переименовывать пакет? В основном для уникальной идентификации приложения, верно? Итак, React Native - это кросс-платформа для разработки приложения, которое работает как на iOS, так и на Android. Поэтому я рекомендую использовать один и тот же идентификатор на обеих платформах. В случае Android Package Name - это уникальный идентификатор вашего приложения, а для iOS - его bundle ID.

.

Шаги:

  1. Сначала закройте все редакторы/студии, например: xcode android studio vscode, а затем установите пакет "react-native-rename" в терминале, выполнив команду (сохраните копию папки проекта в другой папке для резервного копирования, если вы не считаете это безопасным):
  2. .

npm install react-native-rename -g

  1. После успешной установки пакета откройте папку проекта в терминале и выполните следующую команду, где "Your app name Within double quotes" - это имя приложения, а заменяется именем/идом пакета/комплекта:
  2. .

react-native-rename "<Имя вашего приложения в двойных кавычках>" -b <Имя вашего пакета без двойных/одинарных кавычек>

.

Пример: react-native-rename "Aptitude Test App" -b com.vaibhavmojidra.aptitudetestapp

.

Примечание Убедитесь, что название пакета/комплекта/ид написано в маленьком регистре

.
  1. Это еще не сделано, теперь каждый файл будет меняться там, где у него были имена bundle/package, кроме одного в проекте ios, который мы должны сделать вручную, для этого откройте xcode>open a project or file> choose file from projectfolder/ios/projectname.xcodeproj и нажмите open

    .
  2. Нажмите на ваш projectname.xcodeproj, который является первым файлом в навигаторе проектов, затем в поле Bundle identifier введите имя пакета/Bundle ID как показано ниже:

введите описание изображения здесь

  1. После этого запустите в терминале

cd ios

  1. Тогда бегите

pod install

  1. Тогда бегите

cd ..

  1. Сейчас все изменения для ios закончены, осталось сделать последний шаг - открыть Android Studio>Open an Existing Project> выбрать папку projectfolder/android > нажать на open

  2. Позвольте ему загрузиться и завершить весь процесс, затем в меню Build нажмите "Clean Project" и в меню File Menu > Close Project

  3. .
  4. Закройте все редакторы и теперь вы можете попробовать команды для запуска проекта на ios и android, он будет запущен с переименованным пакетом, только при запуске сервера добавьте дополнительный флаг --reset-cache:

npm start --reset-cache

Сейчас это будет работать

.

Для изменения пакета я искал и пробовал много методов, но некоторые из них очень трудны, а некоторые устарели. Во время поиска я нашел сайт, где обсуждается очень простой метод, который проверен и лично я также использовал его. Ссылка : https://www.geoclassifieds.in/2021/02/change-package-name-react-native.html

Самый простой:

npx react-native-rename YourNewAppName -b com.YourCompanyName.YourNewAppName

В VS Code нажмите Ctrl + Shift + F и введите старое имя пакета в поле 'Find', а новое - в поле 'Replace'. Затем нажмите 'Заменить все вхождения'.

Определенно не самый прагматичный способ. Но для меня он оказался действенным.

Я использую react-native-rename* npm-пакет. Установите его через

npm install react-native-rename -g

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

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

react-native-rename отлично сработал для переименования приложения и идентификатора пакета для моего проекта на момент написания этого ответа.

  1. Для обновления названия приложения: npx react-native-rename "New App Label"

  2. Для обновления идентификатора пакета: npx react-native-rename -b "appname.example.com"

    .

После выполнения этого:

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

Не забудьте также перейти к Build.gradle в android/app/... и переименуйте Id приложения, как показано ниже:

defaultConfig {
        applicationId:com.appname.xxx
........
}

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

изменение com.myapp на com.mycompany.myapp

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

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

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

  4. Андроид студия позаботится о том, чтобы поставить подходящее имя пакета для всех скопированных классов.

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

  6. .
  7. Синхронизируйте проект (gradle build)

Следуйте простым шагам, чтобы переименовать имя приложения и имя пакета в случае, если вы не делали никаких пользовательских изменений в папке android (т.е. в сценарии, когда вы только инициализировали проект)

.
  1. Просто измените имя в файле package.json так, как вам нужно, и сохраните его.
  2. Удалите папку с именем android
  3. запустите команду react-native upgrade
  4. .

Примечание:Как ivoteje50 упоминалось в комментарии, не удаляйте папку android, если вы уже выполнили официальные инструкции по созданию хранилища ключей, поскольку это приведет к удалению хранилища ключей, и вы не сможете подписать новое приложение снова.

.

Если вы используете VSCode и Windows.

1.Нажмите Control + Shift + F.

2.Найдите ваше имя пакета и замените все на ваше новое имя пакета.

  1. тип "cd android"

  2. тип "./gradlew clean"

Один из самых простых способов, который я нашел, когда пытался изменить имя пакета, - это использование опции "Поиск" и замена всего в VS Code.

В поиске используйте (com.yourprojectname) И замените его на (com.newProjectName)

Пакет npm "react-native-rename" делает то же самое, поэтому вы можете попробовать вышеуказанный пакет, если не хотите устанавливать какие-либо пакеты.

Но если вы используете firebase, шаги немного отличаются

.

Вы можете использовать пакет react-native-rename, который возьмет на себя все необходимые изменения имени пакета под

app/mainapplication.java

AndroidManifest.xml

но не забудьте вручную изменить имя пакета всех файлов в папке java/com. потому что когда я создал заставку, старое имя пакета не обновляется.

https://www.npmjs.com/package/react-native-rename

Перейдите в Android Studio, откройте приложение, щелкните правой кнопкой мыши на java и выберите Новый, а затем Пакет.

Укажите нужное вам имя (например, com.something).

Переместите файлы из другого пакета (который вы хотите переименовать) в новый пакет. Удалите старый пакет.

Зайдите в свой проект в редакторе и воспользуйтесь ярлыком для поиска во всех файлах (на mac это shift cmd F). Введите имя старого пакета. Измените все ссылки на имя нового пакета.

Перейдите в Android Studio, Build, Clean Project, Rebuild Project.

Сделано!

Счастливого кодирования :)

РЕАКТ 0,64 | 2021 НЕТ ЭКСПО

Пусть исходное имя приложения будет: com.myApp. Пусть имя нового приложения: 'com.newname.myApp`

  1. android\app\src\main\AndroidManifest.xml

Имя xml-атрибута: `package="com.newname.myApp"


  1. android\app\src\main\java\com\[yourAppName]\MainActivity.java

Переименуйте первую строку из package com.myApp; в package com.newname.myApp;


  1. android\app\src\main\java\com\[yourAppName]\MainApplication.java

Переименуйте первую строку в package com.newname.myApp;

В классе private static void initializeFlipper переделайте эту строку:

Class aClass = Class.forName("com.myApp.ReactNativeFlipper");

Для

Class aClass = Class.forName("com.newname.myApp.ReactNativeFlipper");


  1. android\app\build.gradle

На defaultConfig переименуйте applicationId

к "com.newname.myApp"


  1. Запуск в командной строке:

     $ npx react-native start
      $ npx react-native run-android
    

Я использовал пакет react-native-rename.

В терминале выполните команду для установки:

npm install react-native-rename -g

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

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

Используйте npx react-native-rename

С пользовательским идентификатором пакета (только для Android. Для iOS используйте Xcode)

$ npx react-native-rename  -b 

Первый, Переключитесь на новую ветку (необязательно, но рекомендуется)

$ git checkout -b rename-app

Затем переименуйте ваше приложение $ npx react-native-rename "Приложение для путешествий"

С пользовательским идентификатором пакета

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 

После изменения имени, пожалуйста, убедитесь, что вы перешли в папку android и запустили gradlew clean. Затем вернитесь в основной проект и запустите npx react-native run-android.

Также, если у вас есть файл google-services.json в предыдущем проекте, измените его соответственно с новым... и все будет в порядке :)

.

Посмотреть больше здесь https://github.com/junedomingo/react-native-rename#readme

2022 WebDevInsider