Змініть назву пакета для Android у React Native


179

Я використовував react-native init MyAppініціалізацію нового додатка React Native. Це створило серед інших проект Android з пакетом com.myapp.

Який найкращий спосіб змінити назву цього пакета, наприклад, на com.mycompany.myapp:?

Я спробував змінити його, AndroidManifest.xmlале це створило інші помилки, тому я припускаю, що це не так.

Будь-яка ідея?


Клацніть лівою кнопкою миші на назві пакета та перейдіть до Refactor -> Перейменувати параметр для перейменування імені пакета.
— кунал

Що для мене зараз найкраще - це просто знайти і замінити
— mllm

3
Ви також можете спробувати цей saumya.github.io/ray/articles/72
— Енді


для мене пошук і заміна працювали
— shesh

Відповіді:


411

Я перейменував підпапку проекту з: " 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 / 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

23
Мені також потрібно відредагувати файл BUCK, щоб замінити старе значення пакету на нове. До речі, два файли MainAcitiz.java та MainApplication.java слід перенести на новий фізичний шлях.
— Золотий палець

4
Я також перейменували в каталог , android/app/src/main/java/com/old_app_name/щоб ...com/new_app_name/і він , здається, працює.
— ніколас

У мене виникла помилка "Не вдалося завершити сеанс: INSTALL_FAILED_UPDATE_INCOMPATIBLE", поки я вручну не примусив очистити тренажер пристрою для Android: adb uninstall my.package.name ... Тож вказівки в порядку, але симулятор Android може "затримати" стару інформацію в поганий спосіб, який робить його схожим, що вказівки не працюють. (І просто видалення програми НЕ виправляло цього!)
— Білл Паттерсон

Я читав про це, і спробував цю бібліотеку: npmjs.com/package/react-native-rename, здається, працює для цього досить добре, це не лише перейменує додаток, але й може змінити ідентифікатор пакета
— fray88

1
зробити це в Android / папку @Anuj
— Cherniv

76

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

npm install react-native-rename -g

Потім виконайте такі дії з кореня проекту React Native:

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

ось простий і складний, мені просто потрібно оновити MainApplication.java вручну.
— Гопальська Девра

59
Спасибі, зламали проект
— Leap Hawk

@AkashRajput Ви виправили свою проблему? повідомте нас, чи знайшли ви якесь рішення
— Салемем Хан

@SaleemKhan Довелося створити проект ще раз. Цього разу з натисною програмою init .. Просто скопіюйте файли.
— Leap Hawk

5
Це зламало мій проект, і довелося створити новий проект :(
— MujtabaFR

24

Щоб змінити назву пакета з com.myappна: com.mycompany.myapp(наприклад),

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

Змініть com.myappна те, що вам потрібно.

Сподіваюся, це допомагає.


4
Це найпростіший спосіб змінити назву пакета. Тобто, не змінюючи назви вашого локального пакета, це змінить ваш наступний пакунок збірки. Дякую! Після цього зробіть ./gradlew cleanі тоді ./gradlew app:assembleRelease.
— Майкл Харлі

2
"Однак, applicationIdі локальна packageназва не залежать одне від одного", " applicationIdоднозначно визначає ваш додаток на пристрої та в Google Play Store" - developer.android.com/studio/build/application-id
— вісімдесят п'яти

не працює для менеNo matching client found for package name 'xxxxx'
— MichaelMao

10

ви можете просто скористатись пакетом реакції nname npm.

Встановити за допомогою

npm install react-native-rename -g

Потім з кореня проекту React Native виконайте наступне

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

react-native-rename on npm

але зауважте, що ця мочка видалить ваш MainActivity.javaі MainApplication.java. перед тим як змінити назву пакета, дайте резервну копію цього двох файлів, а після зміни назви пакета просто поверніть його на своє місце. це рішення працює для мене

детальніше: react-native-rename


1
Безрезультатно, якщо не змінити назву програми "Спробуйте інше ім'я".
— Зроблено в Місяць

1
насправді я намагаюсь іншої назви свого проекту. але коли я міняю назву проекту, реакція-native-rename видаляє ці два файли з мого проекту.
— Моїн Хосейні

8

Перейти на студію Android

Клацніть правою кнопкою миші ваш пакунок (швидше за все, ком) -> Рефрактор -> Перейменувати -> Введіть нове ім'я пакета в діалоговому вікні -> Робити рефрактор

Він перейменовує назву вашого пакета скрізь.


Це не вплине на всю структуру проекту, я думаю.
— Кішан Оза

Як це можна зробити з проектом JS React-Native?
— Аріфур Рахман

8

Сценарій 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/


7

Якщо ви використовуєте Android Studio-

перехід com.myappнаcom.mycompany.myapp

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

  2. Скопіюйте всі класи з використання GUI com.myappдля com.mycompany.myappAndroid Studio

  3. Android студія подбає про те, щоб поставити назву пакета для всіх скопійованих класів. Це корисно, якщо у вас є спеціальні модулі та не хочете вручну замінювати всі файли .java.

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

  5. Синхронізувати проект (збірка gradle)


5

У мене є рішення, засноване на відповіді @ Чернів (для мене працює macOS). Дві відмінності: у папці java є Main2Activity.java, в який я роблю те саме, і я не переймаюся дзвінками.

У будь-якому випадку, моє рішення робить те, що робить Чернів, за винятком того, що я створив скрипт bash shell для нього, оскільки будую декілька додатків за допомогою одного набору коду і хочу легко змінювати ім'я пакета щоразу, коли запускаю свої npm-скрипти.

Ось сценарій bash, який я використав. Вам потрібно буде змінити пакетName, який ви хочете використовувати, і додати до нього все, що завгодно ... але ось основи. Ви можете створити .sh-файл, надати дозвіл, а потім запустити його з тієї самої папки, з якої запускаєте натиснуту реакцію:

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.MyWebsite.MyAppName to com / MyWebsite / MyAppName)


2

У коді VS натисніть Ctrl + Shift + Fі введіть стару назву пакета у "Знайти" та введіть новий пакет у "Замінити". Потім натисніть «Замінити всі події».

Однозначно не прагматичний шлях. Але, це зроблено для мене трюк.


2

Використовуйте npx react-native-rename <newName>

За допомогою спеціального ідентифікатора групи (лише для Android. Для iOS, будь ласка, використовуйте Xcode)

$ npx react-native-rename <newName> -b <bundleIdentifier>

По-перше, перейдіть на нову гілку (необов’язково, але рекомендується)

$ 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


1

Виконайте прості дії, щоб перейменувати свою назву, app nameі Package nameякщо ви не зробили жодних спеціальних змін у папці Android (тобто. Сценарій, коли ви просто ініціалізували проект)

  1. Просто змініть nameв package.jsonфайлі , як вам потрібно і зберегти його.
  2. Видаліть папку з назвою android
  3. запустити команду react-native upgrade

Примітка. Як згадується ivoteje50 у коментарі, не видаляйте папку Android, якщо ви вже дотримувались офіційних інструкцій щодо створення сховища ключів, оскільки це видалить сховище ключів і ви не зможете підписати новий додаток знову.


1
Не видаляйте папку Android, якщо ви вже дотримувались офіційних інструкцій для створення магазину ключів, оскільки це видалить сховище ключів і ви не зможете підписати новий додаток знову.
— Ivotje50

2
Не робіть цього! Можливо, у вас є тонни спеціального коду в андроїд-коді, який не буде відтворено
— pie6k

1

Перейдіть до Android Studio, відкрийте додаток, клацніть правою кнопкою миші на java та оберіть New, а потім Package.

Дайте ім'я, яке ви хочете (наприклад, com.something).

Перемістіть файли з іншого пакету (який потрібно перейменувати) у новий пакет. Видаліть старий пакет.

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

Перейдіть до Android Studio, Build, Clean Project, Rebuild Project.

Готово!

Щасливе кодування :)


1

Я використав пакет react-native-prename .

У терміналі запустіть команду для встановлення:

npm install react-native-rename -g

У корені проекту React Native запустіть таку команду:

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

0

Ви можете використовувати пакет react-native-prename, який буде приймати всі необхідні зміни назви пакета в

app / mainapplication.java

AndroidManifest.xml

але переконайтеся, що вручну змінити назву пакета всіх файлів у папці java / com. тому що коли я створив активність на екрані сплеск, стара назва пакета не оновлюється.

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


0

Просто за допомогою інструменту пошуку та заміни моєї IDE було зроблено свою справу.


0

Після запуску цього:

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

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

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

-3

Перейдіть до файлу android / app / src / main / AndroidManifest.xml -

Оновлення:

атр андроїд: мітка елементного додатки , як:

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

Нове значення - android: label = "(рядок, який потрібно поставити)"

і

атр андроїд: мітка елементної діяльності , як:

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

Нове значення - android: label = "(рядок, який потрібно поставити)"

Працював для мене, сподіваюся, це допоможе.


2
Я, чесно кажучи, не вважаю, що цю відповідь слід було б оскаржити стільки, скільки було. Однак ця відповідь ніяк НЕ вирішити , що було поставлено питання - як змінити ім'я пакета . Тим не менш, він відповідає на питання "як змінити назву програми, що з'являється в панелі запуску". Це відповідна відповідь? Не зовсім. Чи містить вона корисну інформацію? Так. Тому я пропоную вам знайти питання, яке запитує про назву запуску, і розмістити своє рішення там, а не тут.
— Dev-iL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.