Змініть назву пакета для 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.