Як змінити назву пакета програми для Android


133

Моя сховище ключів пошкоджена, тому Android Market вимагає від мене перейменувати додаток та повторно надіслати його. Однак щоразу, коли я йду редагувати назви пакетів у Manifest та в усіх файлах, це дає мені помилки.

Який правильний спосіб змінити назву програми?


3
до щастя , вони додали кнопку «ім'я магічне, зміна пакета» з 2010 року - див відповідь @Marc Бернштейна - stackoverflow.com/a/4025633/383414
Richard Le Mesurier

дякую Річард Ле ...
ДоруЧидейн


важко бути дублікатом, коли про це запитали 3 роки до цього ...
Райан Терньє

Відповіді:


102

Якщо ви використовуєте Eclipse, ви можете спробувати ці інструкції на веб-сайті розробника Android. Вони спеціально для зразка GestureBuilder, але наскільки я можу сказати, вони повинні застосовуватися до будь-якої програми:

[H] ось як ви могли це зробити в Eclipse:

  1. Клацніть правою кнопкою миші на назві пакета ( src/com.android.gesture.builder).
  2. Виберіть Refactor> Перейменувати та змініть ім'я, наприклад, на com.android.gestureNEW.builder.
  3. Відкрийте файл маніфесту. Всередині <manifest>тегу змініть ім'я пакета на com.android.gestureNEW.builder.
  4. Відкрийте кожен з двох файлів активності та виконайте Ctrl-Shift-O, щоб додати відсутні пакети імпорту, а потім збережіть кожен файл. Запустіть додаток GestureBuilder на емуляторі.

Крім того, переконайтеся, що ви пам’ятали перейменувати сам пакет разом із посиланнями на нього у файлах. У Eclipse ви можете побачити назву пакета у вікні провідника файлів / дереві зліва. На мій досвід, Eclipse іноді може бути трохи прискіпливим і ненадійним з цим (залишаючи, наприклад, бродячі посилання на стару назву пакета).


Це, мабуть, найкращий спосіб зробити це, немає ніякої магічної кнопки зміни назви пакета.
сліп

13
Так, є. Дивіться відповідь @Marc Bernstein.
Марк Філіп

Я не думаю, що оригінальний запитувач теж повинен був змінювати імена Java-пакетів. Марком слід прийняти відповідь.
mpellegr

Перший крок - це не «клацання правою кнопкою миші», слід вибрати в меню «Refactor».
Декінг

І вам може знадобитися змінити app_nameres-> values ​​=> strings.xml
Deqing

302

Існує спосіб легко змінити назву пакета в Eclipse. Клацніть правою кнопкою миші на своєму проекті, прокрутіть вниз до Інструменти Android, а потім натисніть Перейменувати пакет програм.


2
Просто спробував Ельдара, і це спрацювало - але я впевнений, що це теж спрацює.
Аллен Гінгріх

4
Це правильна відповідь, але поточний ADT порушений, і він порушує всі посилання на ваш клас R. Отже, вам потрібно натиснути на кожен окремий файл, зробити "ctrl-shift-o" (або cmd-shift-o на Mac) та вибрати новий пакет з назвою R (НЕ вибирайте android.R!) Речі жахливо зламаються ), потім натисніть зберегти. ... і повторіть ЗА ВСІЙ окремий файл :(
Адам,

@Adam просто для того, щоб полегшити наше життя, натисніть на проект та використовуйте ctrl + shift + o, він оновить імпортну посилання у ВСІЙ клас / файл: D
Blaze Tama

це просто врятувало мені життя, оскільки я втратив смішні кошики і довелося повторно подати заявку.
Теоман шипахі

3
Я знайшов імена файлових пакетів, оголошені вгорі кожного файлу, щоб вони не відповідали новому пакету, ні папці, в якій вони перебувають. Ви можете клацнути правою кнопкою миші ту папку-джерело, яка все ще має стару назву пакета (принаймні, це завжди є), виберіть 'refactor', потім 'rename' та перейменуйте його у новий пакет. затем eclipse перейменовує папку та декларації пакета кожного файлу в нове ім'я пакету, як це повинно було бути зроблено в першу чергу.
Androidcoder

52

Ось як можна це зробити в Eclipse:

  1. Клацніть правою кнопкою миші на назві пакета ( src/com.android.gesture.builder).
  2. Виберіть Refactor > Renameта змініть ім'я, наприклад, на com.android.gestureNEW.builder.
  3. Відкрийте файл маніфесту. Всередині <manifest>тегу змініть ім'я пакета на com.android.gestureNEW.builder.
  4. Відкрийте кожен з двох Activityфайлів і зробіть Ctrl+ Shift+, Oщоб додати відсутні пакети імпорту, а потім збережіть кожен файл.
  5. Запустіть GestureBuilderдодаток на емуляторі.

Посилання на пост

Оновіть дуже простий спосіб клацання правою кнопкою миші на вашому проекті ... введіть тут опис зображення


2
Досить приголомшливий спосіб це зробити!
Чувак

2
Простіше рішення. Це слід було прийняти;)
Nomade

12

В Android Studio , який, чесно кажучи, вам слід використовувати, змініть ім'я пакета right-clickingна на ім'я пакета вproject structure -> Refactor -> Rename...

Потім надається можливість перейменувати каталог або пакет. Виберіть пакет. Каталог повинен відповідати. Введіть нову назву пакета та натисніть Refactor. Це змінить увесь імпорт та видалить зайвий імпорт для вас. Ви можете навіть поправити це за допомогою коментарів та рядків тощо.

Нарешті , відповідно змініть ім’я пакета в AndroidManifest.xml у верхній частині. Інакше ви отримаєте помилки скрізь, нарікаючи на R.Wever.

Ще одне дуже корисне рішення

Спочатку створіть новий пакет із потрібною назвою by right clicking on theпапкою java -> new -> package.`

Потім виберіть і перетягніть всі свої класи до нового пакету. AndroidStudio буде повторно розміщувати назву пакета скрізь.

Після цього: у додатку build.gradleдодавання / редагування додаткаId з новим. тобто ( com.a.bcв моєму випадку):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

Оригінальна публікація та більше коментарів тут


Дивно, коли я це роблю, він не дає каталогу / пакету вибору ... лише "ім'я модуля" ...
Fattie

1
Це робиться для мене саме зараз, якщо я клацну правою кнопкою миші на кореневій директорії. Принаймні для мене це не моє фактичне ім'я пакета. Якщо назва вашого пакета - com.a.bc, під кореневою каталогом під назвою bc має бути каталог. Ось тут ви отримаєте різні варіанти. Зараз я отримую каталог або модуль. Спробуйте модуль. Ви завжди можете його скасувати (Ctrl + z повинен це зробити), якщо він щось порушує.
викрадено

Дякую .. лайно, ти маєш на увазі каталог ".idea" або каталог "app"? Я щойно опублікував пояснювальний запит .. stackoverflow.com/questions/23786361/… Ааа .. Зараз я бачу "Вибрати каталог / модуль рефакторингу", коли натискаю папку "додаток" .... хой карамба!
Fattie

@JoeBlow клацніть правою кнопкою миші packageпід папкоюjava
Абу Шумон

"Android Studio, який, чесно кажучи, вам слід використовувати" Маючи на увазі, що це питання було задано в 2010 році, тоді як AS навіть не було оголошено до 2013 року, не кажучи вже про випуск як стабільний збір (2014). Звичайно, користувачі в даний час повинні використовувати AS. :-)
LarsH

8

Без затемнення:

  1. Змініть ім'я пакета та назви активності в AndroidManifext.xml та в будь-якому іншому місці, яке відображається у файлах .xml (користувацькі назви перегляду тощо)

  2. Оновіть заяву про імпорт пакета для всіх вихідних файлів

  3. Перейменуйте всі папки, щоб відповідати імені пакета. Розташування папок:
    a. бін / класи
    b. gen
    c. src

  4. Оновіть назву проекту у build.xml (або ім'я вашої apk не зміниться)

  5. Видаліть усі файли .class у bin / класах / com / example / myapp / (якщо пропустити цей крок, файли не переписуються під час збирання, а dex створює купу проблем з помилками "Ім'я класу не відповідає шляху"

  6. Видалити gen / com / example / myapp / BuildConfig.java (я не знаю, чому видалення BuildConfig.class на кроці 3a не спричинило dex для оновлення шляху до цього, але поки я не видалив BuildConfig.java, він продовжував відтворювати gen / com / oldapp_example / oldapp і ставити BuildConfig.class туди. Я не знаю, чому у R.java з того самого місця немає цієї проблеми. Я підозрюю, що BuildConfig.java автоматично генерується в попередній компіляції, але R.java не)

Наведені вище 6 кроків - це те, що я зробив, щоб змінити назву свого пакета та отримати успішну * збірку. Може бути кращий спосіб обробляти кроки 5 і 6 за допомогою команд dex для оновлення шляхів, або, можливо, шляхом редагування class.dex.d у кореневому каталозі проекту. Я не знайомий з dex або якщо це нормально для видалення / редагування class.dex.d, тому я пішов із способом видалення .class файлів, які, як я знаю, будуть відновлені у збірці. Потім я перевірив class.dex.d, щоб побачити, що ще потрібно оновити.

* У моїй збірці EXCEPT dex та apkbuilder не залишилось жодних помилок або попереджень, "вони знайшли видалений цільовий файл" без конкретних даних про те, що цей файл. Не впевнений, чи відображається це у кожній збірці, якщо він був там, перш ніж я заблукав зі своїм іменем пакета, або якщо це результат моїх видалень, і я пропускаю крок.


Я вирішив перейменування так само, як і ви, але зі спрощенням: видаліть папки бін та gen. Також я не міг імпортувати перейменований проект у Eclipse, поки я не змінив прихований файл .project, він мав стару назву проекту під <ім'ям>
Jose_GD

6

Виконайте наступні дії: -

  • Клацніть правою кнопкою миші на проекті.
  • Перейдіть до інструментів Android.
  • Клацніть Перейменувати пакет програм.
  • Змініть назву пакета програми.

Зроблено


1
Це працює, але ви також повинні переробити ім'я базового пакета src-папки.
ashishduh

6

Найшвидший спосіб зробити це в Android Studio 1.3 :

  1. Змініть ім'я пакета в manifest
  2. Перейти до Module Settings[F4]-> Flavors, в Application Idзаписи те ж саме ім'я.
  3. Створіть новий пакет із цим ім'ям: [right-click-> new-> package]
  4. Виберіть усі файли java свого проекту та продовжуйте [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Якщо ви не будете дотримуватися цього порядку, ви можете змінити всі файли java один за одним з новим імпортом та купою помилок часу компіляції, тому порядок дуже важливий.


1
При цьому методі R залишається незмінним при рефакторингу. тому імпорт com.app.myapp.R НЕ змінюється на нову назву пакета, і вам доведеться взяти по черзі ...
OWADVL

@OWADVL, R автоматично змінюється при переміщенні файлів до нового пакету, Android Studio автоматично виконує відновлення при переміщенні файлів .java, я це роблю щодня і доки я дотримуюся цього порядку, я ніколи нічого не змінюю у файлах .java вручну
Мовсар Бекаєв

Але в Eclipse ми могли змінити ідентифікатор пакета додатків, не змінюючи пакет усього коду. Майстер перейменовує для вас посилання BuildConfig & R. Мені спантеличено, що те саме не існує в AS.
Том

5

Зміна назви пакету - це біль у попі. Схоже, різні методи працюють для різних людей. Моє рішення швидке та без помилок. Схоже, не потрібно чищення або скидання затемнення.

  1. Клацніть правою кнопкою миші назву пакета, потім Рефрактор> Перейменувати.
  2. Клацніть правою кнопкою миші на назві проекту Інструменти Android> Перейменувати пакет програм.
  3. Вручну встановіть імена пакунків у Manifest, які не були змінені попередніми кроками.

3

Бернштейн має метод, використовуйте інструмент Eclipse, "Перейменуйте пакет додатків", можливо, вам доведеться провести чистку навіть після факту. Крім того, Eclipse іноді втрачає інформацію про речі, коли вносите зміни до проекту. Можливо, вам доведеться скористатися інструментом «Очистити проект» (у меню «Проект»). Якщо це не працює, можливо, доведеться закрити і перезапустити Eclipse. Рішення Voo-doo, але Eclipse може бути таким.


3

Я знайшов найпростішим рішенням було використовувати Regexxer для заміни "com.package.name" на "com.newpackage.name", а потім перейменувати каталоги належним чином. Супер легко, супер швидко.


3
  1. Кулак змінити назву пакета у файлі маніфесту
  2. Повторний фактор> Перейменуйте назву пакета у srcпапку та поставте галочкуrename subpackages
  3. Це все, що ти робиш.

Я спробував за допомогою інструментів Android Марка Бернштейна-> Перейменувати пакет додатків, але це дало мені помилку. Це було простіше, хоча мені довелося виправити деякі зміни після зміни
david-hoze

2

Існує також інше рішення для користувачів без Eclipse, просто змініть атрибут пакета в тезі <manifest> в AndroidManifest.xml, замінивши стару назву пакета, що використовується, на нову. Примітка. Ви повинні налаштувати всі пов'язані заяви про імпорт та пов’язані з ними папки вручну в проекті, ніж теж.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>

1

Альтернатива:

  1. Відкрийте AndroidManifest.xml
  2. Змінити пакет = "НОВЕ ІМЯ" в тезі маніфесту.

1
  1. Клацніть правою кнопкою миші Проект> Інструменти Android> Перейменуйте пакет додатків

  2. Перейдіть до src та клацніть правою кнопкою миші на вашому головному пакеті> Refactor> Перейменувати

  3. Перейдіть до файлу маніфесту та змініть назву пакета.


1

Я просто втратив кілька годин, пробуючи всі рішення. Я був впевнений, проблема в моєму коді - apk запуск, але деякі помилки при роботі з різними класами та заходами.

Єдиний спосіб роботи з моїм проектом:

  1. перейменувати його - файл / перейменувати і встановити всі прапорці
  2. Перевірте, чи немає перейменованих місць, я мав в одному з макетів стару назву ще в інструментах: context = "..
  3. створити нову робочу область
  4. імпортувати проект у нову робочу область

Для мене це працює, єдине рішення.


1

Отже, за допомогою IntelliJ з плагіном Android (Studio) було: Я перейшов AndroidManifest.xmlна вершину та змінив ім'я пакета, клацнувши правою кнопкою миші -> Refactor -> перейменувати. Наша тодішня назва пакету мала чотири частини a.b.c.d, нову лише a.b.c. Тому я перейменував перші три. Потім я перейшов до каталогу згенерованих джерел ( app\build\generated\source\r\development\debug\a\b\c\d), клацнувши правою клавішею Rкласу та Refactor-> Перемістити [d] на один пакет вище. Те саме з BuildConfigв app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Використовуючи Refactor-> Move, IntelliJ оновлює всі посилання на BuildConfigта R.

Нарешті я оновив усі applicationId [s], які я знайшов у gradle.build, який я знайшов. Я натиснув проект «Очистити проект, зробити та відновити». Видалили додаток зі свого телефону і натисніть "Play". Це все спрацювало, тому рефакторинг був легким та досить швидким.


1

В Android Studio 1.2.2 Скажіть, якщо ви хочете перейти com.example.myappна org.mydomain.mynewapp Ви можете виконувати кроки в кожному з каталогів, як показано на знімку екрана нижче. Це дасть вам можливість попереднього перегляду, щоб ви могли попередньо переглянути, перш ніж вносити будь-які зміни.

Перейдіть Refactor -> Renameі дайте нове ім’я. Ви повинні зробити це для кожної з папок, скажімо, для com, example та myapp. Він автоматично оновить імпорт, так що вам не доведеться турбуватися про нього. введіть тут опис зображення

Також оновіть файл, build.gradleякий не оновлюється автоматично.

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Після цього він попросить syncце зробити. Тоді все буде добре. Після цього я можу завантажити свій APK в Google Store. Переконайтеся, що ви підписали додаток, щоб завантажити його в магазин.


0
  1. У вашій студії Android на панелі проектів є значок шестірні "Клацніть на ньому".
  2. Зніміть прапорець Компактні порожні середні пакети
  3. Тепер каталог пакунків був розбитий, тобто окремі каталоги.
  4. Виберіть каталог, який ви хочете перейменувати.
  5. Клацніть правою кнопкою миші на конкретному каталозі.
  6. Виберіть рефактор та перейменуйте параметр.
  7. Діалогове вікно було відкрито, перейменуйте його.
  8. Після введення нового імені натисніть на Refactor.
  9. Потім натисніть на Do Refactor внизу.
  10. Тоді андроїд-студія оновить усі зміни.
  11. Тепер відкрийте файл build.gradle та оновіть applicationId та синхронізуйте його.
  12. Тепер перейдіть до файлу маніфесту та перейменуйте пакет.
  13. Відновіть свій проект.
  14. Ви закінчили :)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.