Как полностью переименовать проект Xcode (т.е. Включая папки)?
У меня есть проект под названием XXX
. Я хочу переименовать этот проект в YYY
.
Обратите внимание, что XXX
является чрезвычайно распространенным термином (например, "данные" или просто "проект"), и, таким образом, простой поиск и замена RegEx невозможен из-за риска повреждения файлов конфигурации проекта.
Мой текущий каталог проекта содержит следующие элементы:
-
XXX
-
XXXTests
-
XXX.xcodeproj
и я хочу переименовать их в:
-
YYY
-
YYYTests
-
YYY.xcodeproj
... соответственно, с необходимыми изменениями, отраженными в моем файле проекта.
Как я могу сделать это без необходимости вручную создавать и заполнять новый проект?
Редактировать: Абсолютно смешно, что это стало моим самым обсуждаемым вопросом.
Ответы
Ответ 1
Шаг 1 - переименовать проект
- Нажмите на проект, который вы хотите переименовать, в "Навигаторе проекта" слева от представления XCode.
- Справа выберите "Инспектор файлов", и имя вашего проекта должно быть там в "Идентичность и тип", измените его на новое имя.
- Нажмите "Переименовать" в выпадающем меню
Шаг 2 - переименуйте схему
- В верхней панели (рядом с кнопкой "Стоп") есть схема для вашего старого продукта, нажмите на нее, затем перейдите в "Управление схемами"
- Нажмите на старое имя в схеме, и оно станет редактируемым, измените название
Шаг 3 - Переименуйте папку с вашими активами
- Выйти из Xcode
- В правильно названной главной папке есть новый файл xcodeproj с неверно названной старой папкой. Переименуйте папку OLD в свое новое имя (если вы используете Git, вы можете запустить
git mv oldame newname
чтобы Git распознал это как ход, а не удалял/добавлял новые файлы). - Повторно откройте проект, вы увидите предупреждение: "Папка OLD не существует", отклоните предупреждение
- В "Навигаторе проектов" слева щелкните имя старой папки верхнего уровня.
- На панели "Утилиты" в разделе "Идентификационные данные и тип" вы увидите запись "Имя", измените ее со СТАРОГО на новое имя
- Чуть ниже находится запись "Местоположение". Нажмите на папку со старым именем и выберите только что переименованную папку
Шаг 4 - Переименовать данные Build plist **
- Нажмите на проект в "Навигаторе проекта" слева, на главной панели выберите "Настройки сборки"
- Искать "plist" в этом разделе
- Под упаковкой вы увидите
Info.plist
и Product bundle identifier
- Переименуйте верхнюю запись в
Info.plist
- Сделайте то же самое для
Product Identifier
- Если вы используете 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 - Предпосылки
- Скопируйте исходную папку проекта во временный
/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.
Отобразится диалоговое окно, в котором перечислены элементы в проекте, которые можно переименовать. Диалог включает предварительный просмотр того, как элементы появятся после изменения.
-
Чтобы выборочно переименовать элементы, отключите флажки для любых элементов, которые вы не хотите переименовывать. Чтобы переименовать только ваше приложение, оставьте выбранное приложение и отмените выбор всех других элементов.
-
Нажмите "Переименовать"
Ответ 6
Дополнительные инструкции при использовании решений @Luke-West + @Vaiden:
.Кроме того, мне не пришлось использовать шаг 3 решения @Vaiden. Просто запустив rm -rf Pods/
в терминале избавился от всех старых файлов pod
Мне также не нужно было использовать шаг 9 в решении @Vaiden, вместо этого я просто удалил старый проект с именем framework в Link Binary Libraries (только что названный каркас уже был там)
Таким образом, обновленные шаги будут следующими:
Шаг 1 - переименуйте проект
- Если вы используете cocoapods в своем проекте, закройте рабочую область и откройте проект XCode для этих шагов.
- Нажмите на проект, который вы хотите переименовать, в "Навигаторе проекта" слева от представления XCode.
- Справа выберите "Инспектор файлов", и имя вашего проекта должно быть там в "Идентификационные данные и тип", измените его на новое имя.
- Нажмите "Переименовать" в раскрывающемся меню
Шаг 2 - переименуйте схему
- В верхней панели (рядом с кнопкой "Стоп") есть схема для вашего СТАРОГО продукта, нажмите на нее, затем перейдите в "Управление схемами"
- Нажмите на старое имя в схеме, и оно станет редактируемым, измените название
- Выйдите из XCode.
- В основной папке переименуйте OLD.xcworkspace в NEW.xcworkspace.
Шаг 3 - Переименуйте папку с вашими ресурсами
- Выйти из Xcode
- В правильно названной главной папке есть новый файл xcodeproj с неверно названной старой папкой. Переименуйте старую папку в новое имя
- При повторном открытии проекта вы увидите предупреждение: "Папка OLD не существует", отклоните предупреждение
- В "Навигаторе проектов" слева щелкните имя старой папки верхнего уровня
- .На панели "Утилиты" в разделе "Идентификация и тип" вы увидите запись "Имя", замените ее со СТАРОГО на новое имя
- Чуть ниже находится запись "Местоположение". Нажмите на папку со старым именем и выберите только что переименованную папку
Шаг 4. Переименование данных Build Plist
- Нажмите на проект в "Навигаторе проекта" слева, на главной панели выберите "Настройки сборки"
- Искать "plist" в этом разделе
Под упаковкой вы увидите Info.plist и идентификатор комплекта продукта
- .Переименуйте верхнюю запись в Info.plist
- Сделайте то же самое для идентификатора продукта
Шаг 5. Обработка подфайла
- В XCode: выберите и отредактируйте Podfile из навигатора проекта. Вы должны увидеть целевое предложение со старым именем. Измените его на NEW.
- Выйдите из XCode.
- В терминале перейдите в каталог проекта, затем:
rm -rf Pods/
- Запустите установку pod.
- Откройте XCode.
- Нажмите на название вашего проекта в навигаторе проекта.
- На главной панели перейдите на вкладку Фазы сборки.
В разделе Link Binary With Libraries найдите OLD-фреймворк и удалите его (следует сказать, что он отсутствует). НОВОЙ Именованный фреймворк уже должен быть, если не использовать кнопку "+" в нижней части окна, чтобы добавить его
- Если у вас есть заголовок мостов Objective-C, перейдите в настройки сборки и измените местоположение заголовка с OLD/OLD-Bridging-Header.h на NEW/NEW-Bridging-Header.h
- Очистить и запустить.
Вы должны быть в состоянии построить без ошибок после того, как вы успешно выполнили все шаги
Ответ 7
Помимо всех шагов, рекомендованных Люком и Вейденом, мне также пришлось переименовать все свойства customModule в моей раскадровке, чтобы они соответствовали новому имени, и это должно быть с учетом регистра.
Ответ 8
Все ответы выше отличные, но не полные, я думаю. Наиболее общее решение должно быть find
+ grep
, также sed
можно использовать для замены символа во всех видах файлов.