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

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

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

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

  • XXX
  • XXXTests
  • XXX.xcodeproj

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

  • YYY
  • YYYTests
  • YYY.xcodeproj

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

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


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

Ответ 1

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

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

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

  1. В верхней панели (рядом с кнопкой "Стоп") есть схема для вашего старого продукта, нажмите на нее, затем перейдите в "Управление схемами"
  2. Нажмите на старое имя в схеме, и оно станет редактируемым, измените название

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

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

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

  1. Нажмите на проект в "Навигаторе проекта" слева, на главной панели выберите "Настройки сборки"
  2. Искать "plist" в этом разделе
  3. Под упаковкой вы увидите Info.plist и Product bundle identifier
  4. Переименуйте верхнюю запись в Info.plist
  5. Сделайте то же самое для Product Identifier
  6. Если вы используете SwiftUI, поищите "Развивающие активы" и обновите путь

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

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

Наконец, вы сделали и можете восстановить (Command + Shift + K, чтобы очистить, Command + B, чтобы построить)

Ответ 2

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

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

После шага 2:

  • Закройте XCode.
  • В основной папке переименуйте OLD.xcworkspace в NEW.xcworkspace.

После шага 4:

  • В XCode: выберите и отредактируйте Podfile из навигатора проекта. Вы должны увидеть предложение target с именем OLD. Измените его на NEW.
  • Закройте XCode.
  • В папке проекта удалите файл OLD.podspec.
  • rm -rf Pods/
  • Запустите pod install.
  • Открыть XCode.
  • Нажмите на название своего проекта в навигаторе проекта.
  • На главной панели перейдите на вкладку Build Phases.
  • В Link Binary With Libraries найдите libPods-OLD.a и удалите он.
  • Если у вас есть заголовок Bridging objective-c, перейдите в "Настройки сборки" и измените местоположение заголовка с OLD/OLD-Bridging-Header.h на NEW/NEW-Bridging-Header.h
  • Очистить и запустить.

Ответ 3

Более быстрое решение с использованием команд оболочки (работает также с 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 в свой репозиторий.
  • Вы сделали!

Ответ 4

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

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

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

Xcode Project Renamer

Ответ 5

Чтобы изменить название проекта,

  • Выберите проект в навигаторе проекта.

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

3. Нажмите Return.

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

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

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

Ответ 6

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

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

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

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

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

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

Шаг 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 из навигатора проекта. Вы должны увидеть целевое предложение со старым именем. Измените его на NEW.
  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. Очистить и запустить.

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

Ответ 7

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

Ответ 8

Все ответы выше отличные, но не полные, я думаю. Наиболее общее решение должно быть find + grep, также sed можно использовать для замены символа во всех видах файлов.