Скопируйте существующий проект с новым именем в Android Studio

102

Я хотел бы скопировать свой проект Android и создать новый проект из тех же файлов, но с другим именем. Это делается для того, чтобы у меня была вторая версия моего приложения, которая поддерживается рекламой в магазине приложений.

Я нашел здесь ответ:

Android - скопируйте существующий проект с новым именем

Но это для Eclipse. Как я могу сделать это в Android Studio?

Майк
источник

Ответы:

66

Действия, указанные в указанной вами ссылке, также должны работать для Android Studio. Просто сделайте копию (используя файловый менеджер) всей папки модуля и дайте ей новое имя. Теперь откройте его и используйтеRefactor -> Rename (щелкните правой кнопкой мыши элемент, который хотите переименовать), чтобы переименовать ваш модуль и пакет.

Смотрите это подробности о рефакторинга в IntelliJ / Android Studio.

free3dom
источник
Windows 10 сообщает, что путь к файлу слишком длинный. У меня есть юбилейное обновление, и я проделал трюк с редактором групповой политики, чтобы уменьшить длинные пути к файлам. Кажется, что Проводник все еще не может обрабатывать длинные пути к файлам. См .: superuser.com/questions/1114181/…
Эндрю С.
3
Я пробовал это, но когда я запускаю проект, Android Studio пишет поверх моего старого приложения на моем устройстве. Я хочу, чтобы на устройстве были одновременно установлены оба приложения (для тестирования пользовательских вкладок Chrome). Как заставить Android Studio иметь оба приложения одновременно на устройстве?
Локслею
Я выбрал папку с базовым пакетом и нажал «Рефакторинг -> Переименовать», у меня возникли ошибки с параметром «переименовать пакет», затем я успешно выполнил вариант «переименовать папку».
Исмаил Явуз
Также необходимо провести рефакторинг и переименовать файл iml !!!, если вы этого не сделаете, это не сработает
JoeCoolman
43

Если вы используете Gradle - не забудьте изменить атрибут applicationId в файле app / build.gradle .

Сергий
источник
3
Это очень важно, так как я забываю изменить applicationId в файле build.gradle и в итоге публикую приложение с неправильным именем пакета в Play Store
wenjiun
Это больше комментарий, чем реальный ответ.
The Unknown Dev
Это был ключ!
Денис
39

Как указывает free3dom , вот что нужно сделать:

  1. Создать копию с помощью файлового менеджера
  2. Вручную отредактируйте build.gradleфайл приложения, чтобы изменить имя пакета (вы можете использовать файловый менеджер).
  3. Отредактируйте вручную, AndroidManifest.xmlчтобы изменить имя пакета.
  4. Беги gradle sync.
  5. Откройте проект в Android Studio и выполните рефакторинг имени пакета.
  6. Снова запустите Gradle Sync.

Кажется, работает без проблем.

Виру
источник
9
Интересно, как вы выполняете синхронизацию Gradle за пределами студии Android?
erdomester
1
последовал за этим, но не сделал шаг 4, просто открыл Android Studio и импортировал скопированный проект. Также удалил файл .iml из скопированного проекта, поскольку был создан новый. отлично поработали! Спасибо!
nommer
@nommer, о чем ты .imlговоришь ?? я могу найти один в, project/prjectname.imlа другой в project/app/app.iml, какой из них нужно удалить?
Hirdesh Vishwdewa
@Veeru можешь объяснить 5-й шаг ??
Hirdesh Vishwdewa
@HirdeshVishwdewa хороший вопрос! я сделал это некоторое время назад , что я не могу вспомнить, но я предполагаю , что это проект / * однопетлевые.
nommer
32

Если вы используете новейшую версию Android Studio, вы можете позволить ей помочь вам в этом.

Примечание. Я тестировал это только в Android Studio 3.0.

Порядок действий следующий:

  1. В представлении проекта (вместе с снимками и структурой в левой части экрана) выберите « Проект» вместо Android .
    Имя вашего проекта будет в верхней части дерева (наряду с внешними библиотеками).
    Выберите свой проект и перейдите в Refactor -> Copy....
    Android Studio спросит у вас новое имя и куда вы хотите скопировать проект. Обеспечьте то же самое.

  2. После копирования откройте новый проект в Android Studio.
    Пакеты по-прежнему будут находиться под старым именем проекта.
    Это пакеты классов Java, идентификатор приложения и все остальное, что было создано с использованием старого имени пакета.
    Нам нужно это изменить.
    В представлении проекта выберите Android .
    Откройте подкаталог java и выберите основной пакет.
    Затем щелкните по нему правой кнопкой мыши и перейдите к Refactorзатем Rename.
    Android Studio выдаст предупреждение о том, что несколько каталогов соответствуют пакету, который вы собираетесь реорганизовать.
    Нажмите Rename packageи нет Rename directory .
    После этого шага ваш проект теперь полностью под новым именем.

  3. Откройте файл res / values ​​/ strings.xml и измените имя проекта.
  4. Не забудьте изменить свой идентификатор приложения в «Gradle Build Module: app».
  5. Последний шаг - очистить и перестроить проект, иначе при попытке запустить ваш проект Android Studio сообщит вам, что не может установить APK (если вы запускали предыдущий проект).
    Так Build -> Clean projectто Build -> Rebuild project.
    Теперь вы можете запустить свой новый клонированный проект.
nt.bas
источник
Шаг 4 - это то, что мне нужно для получения неудачного развертывания, скопированного проекта после простого копирования папки, я думаю,
Джим Фактор
2
Важно: если вы используете сервисы Google Play. Также не забудьте обновить имена пакетов в файле google-services.json.
Gihan Gamage
Спасибо за ответ! Одно дополнение: я также обновил rootProject.name в settings.gradle.
Alexx
16

Это делается для того, чтобы у меня была вторая версия моего приложения, которая поддерживается рекламой в магазине приложений.

На данный момент лучший способ сделать это - не копировать проект.
Вы можете сделать это, используя разные ароматы в вашем build.gradleфайле.

 productFlavors {
        flavor1 {
            applicationId = "com.example.my.pkg.flavor1"
        }
        flavorAdSUpport {
            applicationId = "com.example.my.pkg.flavor2"
        }
  }

Таким образом, у вас будет только копия файлов, и вы легко справитесь с различиями.

Габриэле Мариотти
источник
15

Это комбинация ответа nt.bas и шага 9 ответа Civic с визуальными примерами, потому что мне потребовалось время, чтобы узнать, что было задумано, поскольку я новичок в Android Studio. Он был протестирован в Android Studio 3.2.1.

  1. Откройте проект, который хотите клонировать, в Android Studio. (В этом примере имя старого проекта было, test5а имя нового проекта test6)

  2. На левой панели обзора файлов щелкните: Project (где сейчас может быть написано android).

fig0

  1. Щелкните правой кнопкой мыши проект на панели файлового проводника и выберите рефакторинг> клонировать.

рисунок 1

  1. Измените «Новое имя» на новое имя проекта и нажмите ОК.

фиг2

  1. Файл> открыть> Новое окно> Выберите новый проект> Открыть в новом окне проекта. В новом окне дождитесь завершения нижней строки Android studio / сообщения: «Gradle Sync Finished».

16

17

14

  1. На панели обзора файлов щелкните правой кнопкой мыши (ПКМ) на: app.java/ <имя вашего старого проекта (не тестовое, не androidTest, а просто пустое)>

фиг8

  1. Введите новое имя вашего пакета и установите обе галочки, нажмите рефакторинг.

фиг9 рис10

  1. В нижней левой панели нажмите «Выполнить рефакторинг».

рис12

  1. Откройте app / res / values ​​/ strings.xml и измените имя старого проекта (например, test5) на новое имя проекта в строке:

    <string name="app_name">test5</string>
    

фиг3

  1. Откройте скрипты Gradle / build.gradle (Модуль: приложение) и измените строку на ту же строку с именем вашего нового проекта:% fig4

    applicationId "com.example.a.test5"    
    

фиг4

  1. Желтая линия появится в верхней части панели кода, запрашивая синхронизацию градиента. Нажмите «синхронизировать сейчас».

фиг5

  1. в верхней панели нажмите build> Clean project.

рис13

  1. Если в левом нижнем углу написано «Сборка Gradle завершена», вы нажимаете «Сборка> Перестроить проект».

рис14

рис15

  1. Теперь у вас должна быть возможность снова скомпилировать и запустить свой проект (если он сработал).
в
источник
1
отличный ответ! можно также использовать file> new> import project вместо open project на шаге 5 выше. Это сработало для меня.
Саске Учиха
1
шаг 8, в AndroidStudio: 3.1.4, необходимо открыть представление «поиск \ найти», чтобы увидеть кнопку «Выполнить рефакторинг»
Atara
8

Я следую этим шагам, и пока это работает:

  1. Скопируйте и вставьте папку, как раньше.
  2. Откройте Android Studio (v3.0.1).
  3. Выберите «Открыть существующий проект».
  4. Закройте всплывающее сообщение с заголовком: «Импорт проектов Gradle».
  5. Слева на вкладке Android перейдите к: app -> java -> выберите первую папку (папку вашего проекта)
  6. Рефакторинг => Переименовать ... (Shift + F6)
  7. Переименовать пакет, выберите оба варианта - введите имя новой папки в нижнем регистре.
  8. Сделать рефакторинг
  9. Выберите: «Синхронизировать проект с файлами Gradle» на панели инструментов.
  10. Сборка => Чистый проект
  11. Перейдите в app -> res -> values ​​-> strings.xml и измените имя приложения во второй строке.
Гражданский
источник
Кроме того, если вы используете какие-либо сервисы API Google, такие как Maps, Firebase и т. Д. ... Обязательно удалите файлы, которые содержат ссылки на старые пакеты (например, google_services.json в app / src). Пожалуйста, обратитесь к этому для всей процедуры.
varun
3

Приложение gitbook Практического курса Android Developer Fundamentals Course включает шаги по копированию и переименованию существующего проекта:

https://google-developer-training.gitbooks.io/android-developer-fundamentals-course-practicals/content/en/appendix_utilities.html#copy_project

Брайон Никосон
источник
У меня отлично поработал с Android Studio 3.3 со сложным проектом, который имеет множество модулей и зависимостей. Спасибо.
nat101
1
Эта ссылка на последнем издании: «Этот сайт будет удален 31 июля 2019 года».
Питер Мортенсен
3

При рефакторинге имени пакета в Android Studio вам может потребоваться щелкнуть маленькое зубчатое колесо справа от пакета / android / project / etc - навигатора и снять флажок «компактные пустые средние пакеты», чтобы увидеть каждую часть имени пакета. как собственный каталог. Затем для отдельных каталогов делаем рефакторинг.

Это важно, если вам нужно изменить все части имени пакета. Например, из com.example.originalproject в org.mydomain.newproject. В противном случае операция рефакторинга / переименования позволит вам изменить только "originalproject" на "newproject", а "com.example" останется неизменным. Есть хорошее видео, которое показывает это: https://www.youtube.com/watch?v=dMK-RBVLeIY

гнырфта
источник
2

При копировании проекта вам также потребуется удалить исходные файлы промежуточной сборки остатка (someActivity $ 4.class) из каталогов C: ... \ AndroidStudioProjects (имя_проекта) \ app \ build \ intermediateates \ classes \ release .... В противном случае у вас почти наверняка будут сбои сборки для нового проекта, если вы попытаетесь скомпилировать скопированный проект. Рефакторинг этого не решит.

Марк Россмиллер
источник
2

Я пытался от nt.bas ответа и gnyrfta ответа , который работает хорошо для меня.

Цитата из ответа nt.bas :

Если вы используете новейшую версию Android Studio, вы можете позволить ей помочь вам в этом.

Примечание. Я тестировал это только в Android Studio 3.0.

Порядок действий следующий:

  1. В представлении проекта (вместе с снимками и структурой в левой части экрана) выберите « Проект» вместо Android .
    Имя вашего проекта будет в верхней части дерева (наряду с внешними библиотеками).
    Выберите свой проект и перейдите в Refactor -> Copy....
    Android Studio спросит у вас новое имя и куда вы хотите скопировать проект. Обеспечьте то же самое.

  2. После копирования откройте новый проект в Android Studio.
    Пакеты по-прежнему будут находиться под старым именем проекта.
    Это пакеты классов Java, идентификатор приложения и все остальное, что было создано с использованием старого имени пакета.
    Нам нужно это изменить.
    В представлении проекта выберите Android .
    Откройте подкаталог java и выберите основной пакет.
    Затем щелкните по нему правой кнопкой мыши и перейдите к Refactorзатем Rename.
    Android Studio выдаст предупреждение о том, что несколько каталогов соответствуют пакету, который вы собираетесь реорганизовать.
    Нажмите Rename packageи нет Rename directory .
    После этого шага ваш проект теперь полностью под новым именем.

  3. Откройте файл res / values ​​/ strings.xml и измените имя проекта.
  4. Последний шаг - очистить и перестроить проект, иначе при попытке запустить ваш проект Android Studio сообщит вам, что не может установить APK (если вы запускали предыдущий проект).
    Так Build -> Clean projectто Build -> Rebuild project.

До этого момента вы переименовываете только свое полное имя проекта . Чтобы переименовать название упаковки, вам нужно следовать ответу gnyrfta, который был описан как:

При рефакторинге имени пакета в Android Studio вам может потребоваться щелкнуть маленькое зубчатое колесо справа от пакета / android / project / etc - навигатора и снять флажок «компактные пустые средние пакеты», чтобы увидеть каждую часть имени пакета. как собственный каталог. Затем для отдельных каталогов делаем рефакторинг.


PS: Если у вас

Не удалось завершить сеанс: INSTALL_FAILED_INVALID_APK: разделение lib_slice_0_apk было определено несколько раз

Просто удалите папку сборки appmodule и перестройте проект!

Это решит проблему!

Мукью
источник
2

Я использую Android 3.3, и у меня это сработало:

1 - Выберите вид проекта

2 - Щелкните правой кнопкой мыши имя проекта, которое находится в корне проекта, и выберите параметр refactor -> copy, появится окно с предложением выбрать новое имя.

3 - После шага 2 Android создаст для вас новый проект, вы должны открыть этот новый проект с новым именем.

4 - Измените название приложения в "string.xml", оно находится в "app / res / values ​​/ string.xml"

Теперь у вас есть тот же проект с новым названием. Теперь вы можете изменить имя пакета, это описано в следующих шагах

(необязательно) Чтобы изменить имя пакета main

5 - перейдите в «app / java», там будут три папки с одинаковым именем, основная, an (androidTest)и a (test), щелкните правой кнопкой мыши основную и выберите format -> rename, появится предупреждение о том, что этому пакету соответствуют несколько каталогов. , затем нажмите «Переименовать пакет». Выберите новое имя и нажмите кнопку рефакторинга. Теперь, ниже представления кода, здесь будет предварительный просмотр рефакторинга, нажмите «Выполнить рефакторинг».

6 - Перейдите к опции «построить», нажмите «Очистить проект», затем «Перестроить проект».

7 - Теперь закройте проект и снова откройте его.

vinicius de novaes
источник
1
Наконец-то решение, на которое не нужно 20 минут! Сработало с первого раза, без странных ошибок. На шаге 5 я просто отрефакторил-> переименовал свой пакет.
Snowman
2

Перейдите в исходную папку, в которой находится ваш проект.

  1. Скопируйте проект и прошейте и измените имя.
  2. Откройте Android Studio и обновите.
  3. Перейти к ->Settings.gradle.
  4. Включают ':your new project name '
Бассем Култа
источник
2

Требования и тестирование на Android Studio 3.5

Убедитесь, что ваш старый проект правильно работает с существующей библиотекой студии Android.

  1. Скопируйте каталог проекта и переименуйте папку для нового имени проекта, например, Bramara
  2. Откройте существующий новый проект с помощью Android Studio 3.5. После завершения открытия проекта перейдите к 1: Проект -> Проект. Вы могли видеть, что в вашем проекте есть только два каталога, указывающие на папку нового проекта и папку старого проекта. Закройте свой проект.
  3. Отредактируйте файл appl.iml в каталоге new project -> app -> appl.iml с помощью текстового редактора. Замените все старое имя проекта на новое имя проекта.
  4. Снова откройте существующий новый проект. Перейдите к 1: Проект -> Проект. Вы могли видеть, что у вашего проекта только один каталог.
  5. Перейдите к 1: Проект -> Пакеты. щелкните правой кнопкой мыши свой компонент -> Рефакторинг -> Переименовать.
  6. Появится предупреждающее сообщение. Убедитесь, что все изменения будут применены к новой папке проекта! После этого выберите Переименовать пакеты, например, com.dedetok.bramara.
  7. Перейдите к 1: Проект -> Android. Откройте приложение -> манифесты -> AndroidManifest.xml. Исправьте активность приложения для нового имени пакета. Измените имя вашего приложения на новое.
  8. Откройте Gradle Scripts -> build.gradle (Module: app), измените свой applicationId на новый проект, например com.dedetok.bramara и синхронизируйте проект.
  9. Очистите и перестройте свой новый проект.
  10. Ваш новый проект готов к редактированию / изменению.

Примечание: если adb run показывает, что активность не найдена, отредактируйте конфигурацию Run / Debug. Модуль должен указывать на приложение модуля, например app.

Дедеток
источник
На шаге 7 мне не удалось найти приложение-> манифесты. Таким образом, я открыл Project-> Project и из папки src открыл манифест. Студия попросила выполнить синхронизацию, чтобы отредактировать файл, и все было в порядке
makkasi
1

САМЫЙ ПРОСТОЙ (и определенно самый быстрый) способ сделать это требует WINRAR, 7zip или аналогичного программного обеспечения для архивирования:

  1. Найдите папку проекта в проводнике Windows - дважды щелкните, чтобы открыть эту папку.

  2. Создайте новую папку и назовите ее «Резервная копия».

  3. Еще находясь в папке проекта, выберите все файлы / папки, кроме папки «резервная копия».

  4. Щелкните правой кнопкой мыши и выберите «добавить в архив» или «создать архив» (команда будет отличаться в зависимости от вашего программного обеспечения для архивирования)

  5. Назовите архив и нажмите ОК.

  6. Переместите этот архив в папку «Backup».

Готово - чтобы открыть архив резервных копий, откройте папку «Резервное копирование» и щелкните файл резервной копии правой кнопкой мыши. Выберите «Извлечь» или создайте новую папку, в которую будут извлечены файлы, и нажмите «ОК», затем откройте проект, как обычно, в Android Studio и т. Д.

Тулио Перес
источник
0

У меня были проблемы со следующим:

https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/appendix/appendix-utilities/appendix-utilities.html

в версии Android Studio: 3.3.2

пока я не убил файл .idea / workspace.xml.

$ cp -rv Testcopysource/ TestCopyDest
$ rm TestCopyDest/.idea/workspace.xml
$ stdio.sh & # Run Android Studio on Linux

До этого Android Studio по-прежнему указывала бы на исходную исходную папку, и все переименования применялись к исходным исходным файлам (в Testcopysource в моем примере выше).

Давеб
источник
0

По состоянию на февраль 2020 года для Android Studio 3.5.3 самый простой ответ, который я нашел, - это видео.

Примечание 1. На 01.24 вкладка «Найти» появляется ниже. Нажмите «Выполнить рефакторинг» и продолжайте, как показано на видео.

Примечание 2: Если у вас есть файлы Java / Kotlin, помеченные как простой текст, вам необходимо вручную изменить имя пакета вверху, т.е.package com.example.thisplaceneedstobemanuallyupdated

Примечание 3: будьте осторожны с регистрами букв при переименовании, как и на видео.

Примечание 4: Если вы хотите обновить имя проекта в строке заголовка окна проекта, внесите изменения rootProject.name = 'YourProjectName'в файл « settings.gradle » в каталоге « Gradle Scripts ».

Xfce4
источник
0

В Android Studio 4.0вам нужно всего несколько шагов:

  • в диспетчере файлов скопируйте каталог проекта и переименуйте новый
  • войти в него и изменить applicationIdвнутриapp/build.gradle
  • открыть существующий новый проект в Android Studio
  • откройте один файл класса и выделите часть имени пакета, которую нужно изменить (например, com.domain.appnameчтобы com.domain.newappnameвыделить appname)
  • щелкните по нему правой кнопкой мыши -> «рефакторинг» -> «переименовать»
  • выберите "переименовать пакет"
  • в диалоговом окне выберите «Область: все места» и нажмите «предварительный просмотр» или «рефакторинг»
user2342558
источник