Изменить имя пакета для Android в React Native
Я react-native init MyApp для инициализации нового приложения React Native.
Это создало среди прочих Android проект с пакетом com.myapp.
каков наилучший способ изменить это имя пакета, например:com.mycompany.myapp?
Я попытался изменить его в AndroidManifest.xml но это создали другие ошибки, поэтому я предполагаю, что это не так.
есть идеи?
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
Goto Android studio
щелкните правой кнопкой мыши ваш пакет (скорее всего com) - > рефрактор - > переименовать - > введите новое имя пакета в диалоговом окне - > сделать рефрактор
Он будет переименовывать имя пакета везде.
если вы используете Android Studio -
изменение
com.myappдоcom.mycompany.myapp
создать новую иерархию пакетов com.название_компании.приложение под
android/app/src/main/javaскопировать все классы
com.myappдоcom.mycompany.myappС помощью Android studio GUIAndroid studio позаботится о том, чтобы поместить подходящее имя пакета для всех скопированных классов. Это полезно, если у вас есть некоторые пользовательские модули и не хотите вручную замените во всем .Java-файл.
обновление
android/app/src/main/AndroidManifest.xmlиandroid/app/build.gradle(вместоcom.myappдоcom.mycompany.myappсинхронизация проекта (gradle build)
чтобы изменить имя пакета из com.приложение к: ком.название_компании.приложение (к примеру),
- для приложения iOS приложения react используйте xcode-под общим.
для приложения 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.acmeappbycom.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
- просто изменить
nameнаpackage.jsonкак вам нужно и сохраните его.- удалите папку с именем android
- выполнить команду
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