Intereting Posts
Выключение потока с неперехваченным исключением: отсутствие трассировки стека Получить текущее время и дату на Android Android Studio Не удается загрузить класс 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling' Невозможно добавить учетную запись google в эмулятор android Что означает // noinspection ForLoopReplaceableByForEach означает? Получить измерение из XML и задать размер текста во время выполнения Лучший способ получить весь текст в EditText из InputConnection? Получить значки всех установленных приложений в android Файл HTTP httpient-файла загружает данные об ошибках и тайм-аутах Плагин Cordova Android: config.xml, переписанный кордовой подготовкой? MapFragment.getMapAsync (this) – NullPointerException MSISDN: Это данные SIM-карты? Почему все предоставленные функции (от Blackberry и Android) для получения MSISDN не надежны? Селектор списка элементов GridView для нескольких элементов, не работающих в Android GetFileDescriptor возвращает null при чтении mp3-файлов из файлов расширения Преобразование изображения в видео с эффектом перехода

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

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

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

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

Есть идеи?

Solutions Collecting From Web of "Измените имя пакета для Android в React Native"

Я изменил название подпапки проекта: « android / app / src / main / java / MY / APP / OLD_ID / » для: « android / app / 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 / BUCK :

 ... package="MY.APP.NEW_ID" ... package="MY.APP.NEW_ID" 

И в android / app / build.gradle :

 applicationId "MY.APP.NEW_ID" 

Gradle 'в конце (в папке / android ):

 ./gradlew clean 

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

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

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

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

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

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

Обновить :

Attr android: метка приложения Element как:

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

New Value – android: label = "(строка, которую вы хотите поставить)"

а также

Attr android: ярлык активности элемента как:

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

New Value – android: label = "(строка, которую вы хотите поставить)"

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