Как мне полностью переименовать проект Xcode (т.е. с учетом папок)?


471

У меня есть проект с именем XXX. Я хочу переименовать этот проект в YYY.

Обратите внимание, что XXXэто очень распространенный термин (например, «данные» или просто «проект»), и поэтому простой поиск и замена RegEx невозможен из-за риска повреждения файлов конфигурации проекта.

Мой текущий каталог проекта содержит следующие элементы:

  • XXX
  • XXXTests
  • XXX.xcodeproj

и я хочу переименовать их в:

  • YYY
  • YYYTests
  • YYY.xcodeproj

... соответственно, с необходимыми изменениями, отраженными в моем файле проекта.

Как я могу сделать это без необходимости вручную создавать и заполнять новый проект?


Редактировать: Абсолютно смешно, что это стало моим самым обсуждаемым вопросом.


Возможный дубликат проекта Rename xcode
Рон Мыщук

1
Также здесь спрашивают и отвечают на stackoverflow.com/questions/17744319/… с 200 голосами против ответа
Рон Мищук

1
здесь также спрашивают и отвечают здесь stackoverflow.com/questions/8262613/… набрав 189 голосов, оба сообщения по-прежнему актуальны в Xcode 7
Рон Мыщук,

Если вы просто хотите переименовать имя значка приложения, проверьте этот ответ stackoverflow.com/questions/238980/…
LYu

Ответы:


1021

Шаг 1 - переименовать проект

  1. Нажмите на проект, который вы хотите переименовать, в «Навигаторе проекта» на левой панели окна Xcode.
  2. На правой панели выберите «Инспектор файлов», и имя вашего проекта должно быть найдено в разделе «Идентификация и тип». Измените его на новое имя.
  3. Когда диалоговое окно спросит, переименовывать или не переименовывать элементы контента проекта, нажмите «Переименовать».

Шаг 2 - переименуйте схему

  1. В верхней части окна, рядом с кнопкой «Стоп», находится схема для вашего продукта под его старым названием; нажмите на нее, затем выберите «Управление схемами…».
  2. Нажмите на старое имя в схеме, и оно станет редактируемым; измените имя и нажмите «Закрыть».

Шаг 3 - Переименуйте папку с вашими активами

  1. Выйти из Xcode.
  2. В правильно названной главной папке есть файл с новым именем .xcodeproj с неправильно названной старой папкой. Переименуйте папку OLD в новое имя (если вы используете Git, вы можете запустить его git mv oldname newnameтак, чтобы Git распознал, что это движение, а не удаление / добавление новых файлов).
  3. Снова откройте проект в Xcode, и вы увидите предупреждение «Папка OLD не существует»; отклонить предупреждение.
  4. В «Навигаторе проекта» на левой панели щелкните папку OLD верхнего уровня.
  5. На правой панели в разделе «Идентификационные данные и тип» измените поле «Имя» со СТАРОГО имени на новое имя.
  6. Чуть ниже этого поля находится меню «Местоположение». Нажмите на значок соседней папки и выберите переименованную папку.

Шаг 4 - Переименовать данные Build plist

  1. Нажмите на проект в «Навигаторе проекта» слева и на главной панели выберите «Настройки сборки».
  2. Ищите "plist" в настройках.
  3. В разделе Упаковка вы увидите Info.plistи Product Bundle Identifier.
  4. Если имя введено Info.plist, обновите его.
  5. Сделайте то же самое для Product Bundle Identifier.
  6. Если вы используете SwiftUI, поищите «Development Assets» и обновите путь.

Шаг 5 - Повторите шаг 3 для испытаний (если они у вас есть)

Шаг 6 - Повторите шаг 3 для основных данных, если их имя соответствует имени проекта (если оно у вас есть)

Шаг 7 - Перестройте свой проект

  1. Command+ Shift+ KК чистой
  2. Command+ Bпостроить

5
Вы можете изменить имя проекта, но имена папок остаются прежними. Ты знаешь, как это изменить
Coder221

5
Спасибо! для Xcode 8 файл полномочий должен быть переименован вручную.
Цзюлун Чжао

54
При выполнении шага 3, часть 2 (переименование папки), если вы используете git, я рекомендую git mv oldname newname, чтобы git распознал, что это был шаг, не удаляя и не добавляя все ваши файлы.
Аарон Эш

14
отлично, прекрасно работает в Xcode 8.2, только одна вещь, на которую следует указать при редактировании схемы, если один раз щелкнуть имя схемы не делает ее редактируемой, затем выберите схему и нажмите клавишу возврата, чтобы сделать имя схемы редактируемым.
Khurram Shehzad

5
Не забудьте найти и заменить другие экземпляры вашего старого имени проекта.
Дерек Соике

194

Чтобы добавить к отличному ответу @ luke-west:

При использовании CocoaPods

После шага 2:

  1. Выйти из XCode.
  2. В главной папке переименуйте OLD.xcworkspaceв NEW.xcworkspace.

После шага 4:

  1. В XCode: выбирайте и редактируйте Podfileиз навигатора проекта. Вы должны увидеть targetпредложение со старым именем. Измените это на НОВОЕ.
  2. Выйти из XCode.
  3. В папке проекта удалите OLD.podspecфайл.
  4. rm -rf Pods/
  5. Беги pod install.
  6. Откройте XCode.
  7. Нажмите на название вашего проекта в навигаторе проекта.
  8. На главной панели Build Phasesперейдите на вкладку.
  9. Под Link Binary With Libraries, найдите libPods-OLD.aи удалите его.
  10. Если у вас есть заголовок мостов Objective-C, перейдите в настройки сборки и измените местоположение заголовка с OLD / OLD-Bridging-Header.h на NEW / NEW-Bridging-Header.h
  11. Очистить и запустить.

7
Используя Xcode 8.3.2 мне пришлось использовать cocoapods-deintegrate и переустановить все модули, чтобы запустить проект с новым именем.
SteffenK

2
@SteffenK Есть ли разница между этим методом и rm -rf Pods /? Учитывая, что вы сделали все остальные шаги?
Вайден

1
Не могли бы вы уточнить, пожалуйста? Какие следы?
Вайден

2
@ Vaiden большое спасибо за дополнительную ясность при работе с CocoaPods! Процесс создал вторую ссылку, что было странно, но после удаления все работало отлично! Еще раз спасибо! :)
Мэтт Свифт

4
Может кто-нибудь сказать мне, где я могу найти файл OLD.podspec, который упоминается в этом ответе? В моем проекте я получил несколько файлов, таких как «Podfile» / «Podfile.lock» / «Pods.xcodeproj», и получил пустую папку с именем «Local Podspecs», но я не могу найти файл
.podspec

51

Более быстрое решение с использованием команд оболочки (работает также с CocoaPods):

ПОЖАЛУЙСТА, cdНЕГОТИВНОЕ ХРАНИЛИЩЕ ДО НАЧАЛА РАБОТЫ

Шаг 1 - Предпосылки

  1. Скопируйте исходную папку проекта во временный /NewProjectFolder ВНЕ свой репозиторий git. ⚠️ изменения в .git могут повредить ваш git index 💥 ☠

Шаг 2 - Открыть терминал

Теперь мы собираемся переименовать проект из oldNameв NewProject.

  • Закройте XCode.
  • Иди к своему /NewProjectFolder.
cd /Path/to/your/NewProjectFolder
  • Установите дополнительные инструменты, необходимые.
brew install rename ack
  • Переименуйте файлы и каталоги, содержащие исходную строку. Вам нужно будет запустить эту команду дважды , потому что сначала будут переименованы каталоги, затем файлы и каталоги внутри них будут переименованы на следующей итерации.
find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'NewProject'
  • Проверьте, все ли файлы, содержащие исходную строку, переименованы. Вы должны увидеть пустой вывод.
find . -name 'oldName*'
  • Заменить все вхождения строки во всех файлах.
ack --literal --files-with-matches 'oldName' --print0 | xargs -0 sed -i '' 's/oldName/NewProject/g'
  • Проверьте, были ли заменены все вхождения строки во всех файлах. Вы должны увидеть пустой вывод.
ack --literal 'oldName'
  • Запустить pod install
  • Добавьте NewProjectFolderв свой репозиторий.
  • Вы сделали!

3
Спасибо за это, я нашел это полезным. При копировании и вставке подобных команд я предпочитаю, чтобы работа была свернута, поэтому пример имени «YourNewAmazingProjectName» излишний, просто используйте «пример», поскольку он продлевает срок службы моего ключа удаления.
LpLrich

1
@LpLrich спасибо за ваше предложение, я только что обновил свой ответ.
Пьетро Бассо

Основная папка была переименована, но я не вижу никаких других каталогов или файлов, переименованных, какие-либо предложения?
Итан Паркер

2
@EthanParker вам нужно запустить find . -name 'oldName*' -print0 | xargs -0 rename --subst-all 'oldName' 'ExampleName'дважды, файлы и каталоги внутри основных папок будут переименованы на второй итерации.
Пьетро Бассо

1
Я использовал coreData в своем проекте, и мне пришлось выполнять эту команду не дважды, а три раза.
ShadeToD

21

Существует проект GitHub, который называется Xcode Project Renamer:

Это должно быть выполнено изнутри корня каталога проекта Xcode и вызвано с двумя строковыми параметрами: $ OLD_PROJECT_NAME & $ NEW_PROJECT_NAME

Скрипт рекурсивно просматривает все файлы и каталоги, включая проект Xcode или файл рабочей области, и заменяет все вхождения строки $ OLD_PROJECT_NAME строкой $ NEW_PROJECT_NAME (как в имени, так и в содержимом каждого файла).

НЕ ЗАБУДЬТЕ СОЗДАТЬ ВАШ ПРОЕКТ!

Xcode Project Renamer


Это бесполезно для начинающих, все, что он делает, это повреждает мой основной файл проекта, а также не удаляет скрипт, используя приведенные ниже команды. $ rm rename.swift
Питер Уолтер,

Пожалуйста, не идите после ярлыков.
Питер Уолтер

6
@ peter-walter, вы всегда должны делать резервные копии своих данных перед такими операциями.
Олкай Эрташ

Это работает как шарм. Недостает только то, что вам нужно запустить pod installпосле запуска скрипта.
romin21

11

XCode 11.0+.

Теперь это действительно просто. Просто перейдите на Project Navigatorлевую панель окна XCode.
Нажмите, Enterчтобы сделать его активным для переименования, так же, как вы меняете имя папки.
введите описание изображения здесь

Просто измените новое имя здесь, и XCode попросит вас переименовать другие элементы.

введите описание изображения здесь,

Нажмите Renameздесь, и все готово.
Если вы не уверены, что имя вашей корневой папки не изменилось, то это просто папка. просто переименовал его с новым именем.
введите описание изображения здесь


7

Изменить название проекта;

  1. Выберите свой проект в навигаторе проекта.

2.В разделе «Идентификация и тип» инспектора файлов введите новое имя в поле «Имя».

3. Нажмите Return.

Появится диалоговое окно со списком элементов вашего проекта, которые можно переименовать. Диалог включает предварительный просмотр того, как элементы будут отображаться после изменения.

  1. Чтобы выборочно переименовывать элементы, снимите флажки для тех элементов, которые вы не хотите переименовывать. Чтобы переименовать только ваше приложение, оставьте приложение выбранным и отмените выбор всех остальных элементов.

  2. Нажмите "Переименовать"


5

Дополнительные инструкции при выполнении решений @ Luke-West + @ Vaiden:

  • Если ваша схема не изменилась (все еще показывает мой Mac) в левом верхнем углу рядом с кнопкой остановки:

    1. Нажмите НОВОЕ созданное имя проекта (рядом с кнопкой «Стоп»)> Нажмите «Редактировать схемы»> «Построить» (слева)> Удалить старую цель (она будет отсутствовать) и заменить ее на НОВЫЙ именованный проект под логотипом НОВОГО именованного проекта

Кроме того, мне не пришлось использовать шаг 3 решения @ Vaiden. Просто запущенный rm -rf Pods/в терминале избавился от всех старых файлов pod

Мне также не пришлось использовать шаг 9 в решении @ Vaiden, вместо этого я просто удалил старый проект с именем framework в Link Binary Libraries (только что названный framework уже был там)

Таким образом, обновленные шаги будут следующими:

Шаг 1 - переименовать проект

  1. Если вы используете cocoapods в своем проекте, закройте рабочую область и откройте проект XCode для этих шагов.
  2. Нажмите на проект, который вы хотите переименовать, в «Навигаторе проекта» слева от представления XCode.
  3. Справа выберите «Инспектор файлов», и имя вашего проекта должно быть там в «Идентичность и тип», измените его на новое имя.
  4. Нажмите «Переименовать» в выпадающем меню

Шаг 2 - переименуйте схему

  1. В верхней панели (рядом с кнопкой «Стоп») есть схема для вашего старого продукта, нажмите на нее, затем перейдите в «Управление схемами»
  2. Нажмите на старое имя в схеме, и оно станет редактируемым, измените название
  3. Выйти из XCode.
  4. В основной папке переименуйте OLD.xcworkspace в NEW.xcworkspace.

Шаг 3 - Переименуйте папку с вашими активами

  1. Выйти из Xcode
  2. В правильно названной главной папке есть новый файл xcodeproj с неправильно названной старой папкой. Переименуйте старую папку в новое имя
  3. Повторно откройте проект, вы увидите предупреждение: «Папка OLD не существует», отклоните предупреждение
  4. В «Навигаторе проектов» слева щелкните имя старой папки верхнего уровня.
  5. На панели «Утилиты» в разделе «Идентификационные данные и тип» вы увидите запись «Имя», измените ее со СТАРОГО на новое имя
  6. Чуть ниже находится запись "Местоположение". Нажмите на папку со старым именем и выберите только что переименованную папку

Шаг 4 - Переименовать данные Build plist

  1. Нажмите на проект в «Навигаторе проекта» слева, на главной панели выберите «Настройки сборки»
  2. Ищите «plist» в этом разделе. Под упаковкой вы увидите Info.plist и идентификатор комплекта продукта.
  3. Переименуйте верхнюю запись в Info.plist
  4. Сделайте то же самое для идентификатора продукта

Шаг 5 Обработка подфайла

  1. В XCode: выберите и отредактируйте Podfile из навигатора проекта. Вы должны увидеть целевое предложение со старым именем. Измените это на НОВОЕ.
  2. Выйти из XCode.
  3. В терминале перейдите в каталог проекта, затем: rm -rf Pods/
  4. Запустите установку pod.
  5. Откройте XCode.
  6. Нажмите на название вашего проекта в навигаторе проекта.
  7. На главной панели перейдите на вкладку Фазы сборки. В разделе Link Binary With Libraries найдите OLD-фреймворк и удалите его (следует сказать, что он отсутствует). НОВОЙ Именованный фреймворк уже должен быть, если не использовать кнопку «+» в нижней части окна, чтобы добавить его.
  8. Если у вас есть заголовок мостов Objective-C, перейдите в настройки сборки и измените местоположение заголовка с OLD / OLD-Bridging-Header.h на NEW / NEW-Bridging-Header.h
  9. Очистить и запустить.

Вы должны быть в состоянии построить без ошибок после того, как вы успешно выполнили все шаги


2
Для шага 5.3 вместо rm-rf Pods/более чистого способа используется запуск, pod deintegrateкоторый удаляет все следы CocoaPods из вашего проекта Xcode, но оставляет ваш Podfile без изменений.
jklapwyk

Это правила. Это дало мне основание объединить приложение Ionic с существующим приложением iOS.
T4L

2

Помимо всех шагов, рекомендованных Люком и Вейденом, мне также пришлось переименовать все свойства customModule в моей раскадровке, чтобы они соответствовали новому имени, и это должно быть с учетом регистра.


1
единственный человек, который когда-либо упоминал об этом!
Толстяк

1
Обратите внимание, что вы можете сделать это в ИНТЕРФЕЙС-БИЛДЕР, просто «повторно щелкнув» по ​​полю. После этого он будет правильно «переустановлен» на имя вашего нового проекта.
Толстяк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.