Дублируйте и переименовывайте проект Xcode и связанные с ним папки [закрыто]

195

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

Sammio2
источник

Ответы:

368

Этот ответ является кульминацией различных других публикаций и учебных пособий StackOverflow по всему Интернету, собранных в одном месте для моей будущей ссылки и для помощи всем, кто может столкнуться с той же проблемой. Весь кредит предоставляется для других ответов в конце.

Дублирование проекта XCode

  • В Finder скопируйте папку проекта в нужное место вашего нового проекта. Не переименовывайте имя файла .xcodeproj или любые связанные с ним папки на этом этапе.

  • В Xcode переименуйте проект. Выберите свой проект на панели навигатора (левая панель). На панели «Служебные программы» (правая панель) переименуйте ваш проект, примите изменения, предлагаемые Xcode.

  • В XCode переименуйте схемы в «Управлении схемами», также переименуйте любые цели, которые у вас могут быть.

  • Если вы не используете идентификатор пакета по умолчанию, который в конце содержит текущее имя PRODUCT_NAME (поэтому он будет обновляться автоматически), измените идентификатор пакета на новый, который вы будете использовать для дублированного проекта.

Переименование исходной папки

Таким образом, после выполнения вышеупомянутых шагов у вас должен быть дублированный и переименованный проект Xcode, который должен успешно скомпилироваться и скомпилироваться, однако ваша папка с исходным кодом будет по-прежнему иметь имя, как и в исходном проекте. Это не вызывает каких-либо проблем с компилятором, но это не самая четкая файловая структура, по которой люди могут перемещаться в SCM и т. Д. Чтобы переименовать эту папку, не нарушая все ссылки на файлы, выполните следующие действия:

  • В Finder переименуйте исходную папку. Это сломает ваш проект, потому что XCode не будет автоматически обнаруживать изменения. Все ваши списки файлов xcode потеряют свои связи с реальными файлами, поэтому все станут красными.

  • В XCode, нажмите на виртуальную папку, которую вы переименовали (это, вероятно, будет прямо вверху, прямо под вашим фактическим .xcodeproject). Переименуйте это, чтобы соответствовать имени в Finder, это ничего не исправит и строго не обязательный шаг, но хорошо, если имена файлов совпадают.

  • В XCode, выберите папку, которую вы только что переименовали в области навигации. Затем на панели «Утилиты» (справа) щелкните значок, который выглядит как темно-серая папка, прямо под выпадающим меню «Местоположение». Отсюда перейдите к вашей переименованной папке в Finder и нажмите «Выбрать». Это автоматически переопределит все ваши файлы, и они больше не должны отображаться красным цветом в навигационной панели Xcode.

Значок, чтобы нажать

  • В настройках сборки вашего проекта / целей найдите старое имя папки и вручную переименуйте все найденные вхождения. Обычно есть один для prefix.pch и один для info.plist, но может быть и больше.

  • Если вы используете какие-либо сторонние библиотеки (Testflight / Hockeyapp / и т. Д.), Вам также нужно будет найти «Пути поиска библиотек» и переименовать все вхождения старого имени файла здесь.

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

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

кредиты

Большое спасибо Нику Локвуду и Поли Глотту за отдельные ответы на эту проблему.

Sammio2
источник
3
После выполнения вышесказанного я просто искал в проекте отверстия «старое имя» и обнаружил, что нужно изменить (заголовок префикса), и он скомпилировался нормально с «новым именем» и в другом месте. Отличный учебник - как раз то, что мне нужно. (Проверено с Xcode 5.0.1 / iOS 7.0)
Mac,
Это, похоже, не помогло мне полностью (здесь, на Xcode 5.0.2, с проектом, который был перенесен с 4.6.3 на 5.0.0). Внутри *.xcodeproj/project.pbxprojфайла было много вещей, которые содержали исходный путь к папке. В частности, сборка не удалась, потому что она продолжала искать info.plist в исходной папке.
Стивен Лу
2
Любопытно, что это своего рода старый школьный способ сделать это ... stackoverflow.com/questions/10006482/… (ответ Даниэля)
Толстяк
1
Xcode 7.1.1 вылетает для меня при первом препятствии - переименование проекта. Будет ли расследовать, но кто-нибудь еще нашел это?
HughHughTeotl
5
Не хватает как справиться, когда у вас есть интеграция Cocoapods в проекте. Я нашел полезную ссылку, чтобы справиться с этим: h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK
30

Я публикую это, так как всегда пытался переименовать проект в XCode.

Переименование проекта - это хорошо и просто, но это не переименовывает исходную папку. Вот шаг за шагом того, что я сделал, который работал отлично в Xcode 4 и 5 благодаря ссылкам ниже.

Ссылки REF:
переименовать проект.
Переименуйте исходную папку и другие файлы.

1- Сделайте резервную копию вашего проекта.

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

2- Откройте свой проект.

3- Медленно дважды щелкните или нажмите «Enter» в названии проекта (синий верхний значок) и переименуйте его по своему вкусу.

ПРИМЕЧАНИЕ. После того, как вы переименуете проект и нажмете «ввод», он предложит автоматически изменить все записи, связанные с именем проекта, и позволит вам отменить выбор некоторых из них, если вы хотите. Выберите все из них и нажмите ОК.

4- переименовать схему

а) Нажмите меню рядом с кнопкой «Стоп» и выберите «Управление схемами».

б) Нажмите один-медленный клик или нажмите ввод по старой схеме имен и переименуйте ее так, как вам нравится.

в) Нажмите ОК.

5 - Сборка и запуск, чтобы убедиться, что он работает.

ПРИМЕЧАНИЯ. На этом этапе все важные файлы проекта должны быть переименованы, за исключением комментариев в классах, созданных при создании проекта, или в исходной папке. Далее мы переименуем папку в файловой системе.

6- Закройте проект.

7- Переименуйте основную и исходную папку.

8. Щелкните правой кнопкой мыши .xcodeprojфайл пакета проекта и выберите «Показать содержимое пакета» в контекстном меню. Откройте файл .pbxproj в любом текстовом редакторе.

9. Найдите и замените любое вхождение исходного имени папки новым именем папки.

10- Сохраните файл.

11- Откройте проект XCode, протестируйте его.

12- Готово.

ИЗМЕНИТЬ 10/11/19:

Существует инструмент для переименования проектов в XCode, я еще не пробовал его комментировать. https://github.com/appculture/xcode-project-renamer

fs_tigre
источник
2
Вопрос заключался в дублировании и переименовании скопированного проекта. Этот ответ только для переименования существующего проекта.
martinjbaker
1
Для меня это самый простой подход. Просто скопируйте исходную папку проекта, например, MyProject, рекурсивно в «MyNewProject». Затем откройте MyNewProject и выполните инструкции fs_tigre. Я удивлен, что ни Android Studio, ни XCode не предоставляют опцию «File-> Clone Project», которая была бы так удобна. Может быть, хороший плагин для кого-то ( nshipster.com/xcode-plugins )?
Blisterpeanuts
Единственный способ, который работал для меня - XCode 8.2
GreenAsJade
2
Шаг 10.1 - Если у вас есть соединяющие заголовок и / или файлы разрешений, переименуйте их, чтобы отразить ваше новое имя. Если вы используете Cocoapods, отредактируйте имя в вашем файле pod.
Дэвид Лари
6

Начиная с XCode 7 это стало намного проще.

Apple зарегистрировала процесс на своем сайте: https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/RenamingaProject/RenamingaProject.html

Обновление: ссылка XCode 8: http://help.apple.com/xcode/mac/8.0/#/dev3db3afe4f

PBICS
источник
2
Это работает только для переименования внутренних компонентов приложения, но внешние папки для приложения остаются неизменными
smac89
Xcode 11 ссылки: help.apple.com/xcode/mac/11.4/#/dev3db3afe4f
Атар
2

Я использую этот скрипт после того, как переименую свой iOS-проект. Это помогает изменить имя каталогов и сделать имена синхронизированными.

http://github.com/ytbryan/rename

ПРИМЕЧАНИЕ: вам нужно будет вручную изменить название схемы.

ytbryan
источник
1

В примере кода для книги «Instant OpenCV для iOS» я нашел bash-скрипт, который копирует проект из папки в другую.
Проведя небольшое исследование, я нашел сообщение в блоге от того, что, кажется, является первоначальным автором сценария: http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html , где Вы можете скачать скрипт . Я дал ему попробовать и запустить его из терминала, как это

    sh renameXcodeProject.sh <name-of-existing-folder> <name-of-folder-to-create>   

работает отлично.
Дополнительную информацию можно найти, открыв файл в текстовом редакторе. надеюсь, это поможет

Джорджо Темпеста
источник
0

Я использую Xcode 6+ и просто делаю:

  • Скопируйте все файлы в папках проекта в новые папки (с новым именем).
  • открыто *.xcodeproj or *.xcworkspace
  • Изменить название проекта.
  • Нажмите на схему и удалите текущую химию и добавьте новую.

Здесь делается, но имя окна Xcode и *.xcodeproj or *.xcworkspaceеще <old-name>. Тогда я делаю:

  • pop install
  • открыто <new name>.xcworkspace
SLyHuy
источник
0

Еще одна вещь, чтобы попробовать!

Когда я скопировал все мои файлы, открыл проект и переименовал его, все изменилось на имя моего нового проекта, за исключением цели теста! Я получил ошибку компоновщика, из-за которой мне не хватало файла myOldProjectname.app. Вот что это исправило:

  1. Нажмите на настройки вашего проекта и выберите цель теста введите описание изображения здесь

  2. Нажмите на настройки сборки и найдите «тестовый хост» введите описание изображения здесь

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

Надеюсь, это поможет!

erparker
источник
0

Если у кого-то возникнут проблемы со сбоями раскадровки после копирования вашего проекта, перейдите на Main.storyboard под Identity Inspector.

Затем убедитесь, что ваш текущий модуль является правильным переименованным модулем, а не старым.

Wraithseeker
источник
0

Я использую простой скрипт BASH для переименования.

Использование: ./rename.sh oldName newName

#!/bin/sh

OLDNAME=$1
NEWNAME=$2

export LC_CTYPE=C 
export LANG=C
find . -type f ! -path ".*/.*" -exec sed -i '' -e "s/${OLDNAME}/${NEWNAME}/g" {} +

mv "${OLDNAME}.xcodeproj" "${NEWNAME}.xcodeproj"
mv "${OLDNAME}" "${NEWNAME}"

Ноты:

  1. Этот скрипт будет игнорировать все файлы, такие как .gitи.DS_Store
  2. Не будет работать, если старое имя / новое имя содержит пробелы
  3. Может не работать, если вы используете капсулы (не проверено)
  4. Имя схемы не изменится (в любом случае проект запускается и компилируется нормально)
Антон Малмыгин
источник