Переименование проекта xcode 4 и фактической папки

119

Я знаю, как переименовать проект в Xcode 4, но как переименовать исходную папку? Дело в том, что переименование проекта в Xcode переименовывается только в Xcode (хотя это прогресс по сравнению с предыдущим), но почему Xcode не переименовывает папку в файловой системе, я не знаю.

Крис Г.
источник
Вы пробовали просто переименовать папку?
Дэвид Браун
2
У меня есть друг, и тогда все файлы в файле проекта отсутствуют - все они помечены как прочитанные, так как не имеют ссылки. Но я нашел душу - смотрите мой ответ. Спасибо за ответ
Крис Г.

Ответы:

259

Вы можете сделать это из Xcode, не прибегая к ручному редактированию файла pbxproj в текстовом редакторе!

Вот как:

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

  2. В Xcode щелкните виртуальную папку (теперь сломанную) на левой боковой панели и переименуйте ее, чтобы она соответствовала имени в Finder (на самом деле вы можете называть ее как угодно или не переименовывать вообще, но это было бы безумием ). Это не исправит красные файлы внутри папки, но это нормально.

  3. На правой боковой панели в Xcode щелкните значок, показанный на снимке экрана ниже, чтобы открыть диалоговое окно файла. Выберите папку, которую вы ранее переименовали. Это повторно связывает виртуальную папку с реальной папкой на диске и автоматически исправляет ссылки на все файлы внутри.

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

Все сделано!

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

РЕДАКТИРОВАТЬ: этот параметр все еще присутствует в Xcode 5, но по умолчанию скрыт. Чтобы отобразить его, щелкните тонкий заголовок «Идентификация и тип» в инспекторе над панелью «Параметры текста», чтобы развернуть его.

Ник Локвуд
источник
Отлично, я бы просто добавил, что если переименование является частью переименования всего проекта, то есть еще один шаг: измените «Имя проекта» в правой верхней области и разрешите Xcode переименовать все внутренне, чтобы соответствовать.
RedYeti
1
Все сработало отлично, и проект действительно был переименован, но сообщение сборки вверху и имя симулятора по-прежнему сохранили старое имя, чтобы изменить это: перейдите в меню продукта, управляйте схемами и переименуйте схему
BlackTigerX
Правда. Вы также можете просто удалить схему и нажать кнопку автоматического создания схем.
Ник Локвуд,
Кто-нибудь знает, как это сделать в xCode 5? Я больше не вижу этой волшебной кнопки. :(
Джейсон
Он все еще там, он просто спрятан. Вы должны развернуть строку под названием «Идентификация и тип» в инспекторе, щелкнув по ней. Мне потребовалось около 20 минут, чтобы понять это!
Ник Локвуд
112

Я делал это десятки раз:

  • Переименуйте проект, щелкнув и отредактировав заголовок в навигаторе проекта Xcode.
  • Закройте Xcode.
  • Переименуйте исходную папку.
  • В Finder откройте .pbxprojфайл внутри пакета проекта (контекстное меню «Показать содержимое пакета») с помощью любого текстового редактора.
  • Найдите и замените любое вхождение исходного имени папки новым именем папки.
  • Сохраните файл.
  • Откройте проект Xcode.
djromero
источник
3
Только не забудьте сделать это после переименования проекта
Арам Кочарян
Я следую вашим инструкциям и терплю неудачу. Я думаю, что проблема в «Поиске и замене любого вхождения исходного имени папки на новое имя папки». Не могли бы вы дать более подробную инструкцию по этому шагу? Спасибо
Philip007
Как выполнять поиск и замену, зависит от выбранного текстового редактора или инструмента. В моем случае с vim: <ESC>:% s / old / new / g <ENTER> Может произойти сбой, если в файле проекта есть что-то еще с конфликтующим именем.
djromero
Спасибо @madmw, разобрался. Я использую TextEdit. Думаю, уловка в том, чтобы заменить атрибут «Содержит» на «Полное слово» при поиске и замене. А подробную инструкцию выкладываю ниже.
Philip007
Работает удовольствие! При переименовании папки цели, например статической библиотеки, мне также приходилось возиться со своими схемами, а также переименовывать заголовок префикса и файл информационного списка.
Тим Поттер
12

Задача: переименовать "Play" в "Play2" как в Xcode, так и в Finder

Измените это:

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

К этому:

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

ШАГИ:

// Прежде всего, сделайте резервную копию проекта в Finder!

  • Переименовать проект в навигаторе проекта Xcode // Щелкните имя проекта, затем нажмите Enter
  • Переименовать группу в навигаторе проекта Xcode // не влияет на имя папки в Finder
  • Закройте Xcode
  • Переименовать внешнюю папку (левый столбец на изображении) в Finder

// Все вышеперечисленные шаги просты и без побочных эффектов // // Теперь наступает сложная часть: переименуйте внутреннюю папку (средний столбец на изображении) в Finder (на том же уровне, что и .xcodeproj)

  • Переименуйте внутреннюю папку в Finder, не закрывая Xcode
  • Щелкните правой кнопкой мыши .xcodeproj, выберите «Показать содержимое пакета».
  • Откройте файл .pbxproj с помощью Mac TextEdit
  • Найдите и замените все "Play" на "Play2". Чтобы гарантировать, что все пойдет правильно, щелкните стрелку в левом конце строки поиска и измените атрибут поиска. Измените "Содержит" на "Полное слово" и снимите флажок "Игнорировать регистр".
  • Сохраните файл .pbxproj
  • Откройте проект Xcode и запустите
оборота Philip007
источник
4

Вот как эффективно переименовать проект в XCode4 (ВКЛЮЧАЯ ПАПКУ ФАЙЛОВ):

  1. Полностью закройте все открытые проекты в XCode, чтобы избежать проблем.
  2. Скопируйте рассматриваемый проект в новую папку (ВАЖНО: СОХРАНИТЕ РЕЗЕРВНУЮ КОПИЮ СТАРЫХ ПРОЕКТОВ)
  3. Откройте проект
  4. Переименуйте сам проект в XCode4 (дважды щелкните имя проекта), измените имя и следуйте инструкциям (да для всего)
  5. Перейдите в продукт, управляйте схемами и переименуйте схему (дважды щелкните название схемы)
  6. Закройте свой проект (убедитесь, что он полностью закрыт, иначе следующие шаги не сработают)
  7. В Finder перейдите в папку Project и щелкните правой кнопкой мыши файл .xcodeproj, затем выберите параметр «Показать содержимое пакета».
  8. Затем щелкните правой кнопкой мыши файл .pbxproj и откройте его с помощью TextEdit.
  9. Замените все вхождения имени папки, в которой раньше находились проекты (старое имя проекта на имя нового проекта)
  10. Сохраните файл
  11. Снова откройте проект и соберите его!
Mav55
источник
Не могли бы вы дать более подробную инструкцию по шагу 9?
Philip007,
2

Во-первых - не переименовывайте проект Xcode !!!

Если вам нужно, то это может быть то, что ниже - мне так и не удалось заставить его работать, в итоге я создал новый проект и начал копировать все существующие файлы. Xcode такой ах .... В нем так много непродуктивных вещей, например, попробуйте переименовать файл с "Name" на "name". Ну что ж, получайте удовольствие.

Я нашел ответ или как это обойти: откройте файл pbxproj, щелкнув правой кнопкой мыши «Показать содержимое пакета», и там вы отредактируете файл project.pbxproj - вам нужно переименовать ссылку с именем path и некоторые другие вещи - просто найдите имя папки добавлено "/".

Вот и все. Надеюсь, это кому-то поможет.

Крис Г.
источник
2
Вчера я переименовал проект, и он работал нормально. Я согласен с тем, что Xcode - это "ааа": D
manmal
Есть совершенно безопасный и поддерживаемый способ сделать это - см. Мой ответ.
Ник Локвуд
2

Вот еще одна проблема, о которой вам следует знать при замене значений в вашем файле * .pbxproj. Если ваше старое имя папки было FooBar, в вашем файле * .pbxproj будет запись, которая будет выглядеть так:

path = FooBar

Предположим, ваша новая папка называется Foo Bar. То есть вы вводите пробел. Затем эта строка должна стать

path = "Панель Foo"

Если вы просто выполните простой поиск и замену, результатом будет файл * .pbxproj, который Xcode не сможет проанализировать. Если в вашем новом имени папки есть пробел, а в старом имени пробела нет, обязательно включите двойные кавычки.

Zampano
источник
2

Я подводлю итоги для себя, изучив различные ответы выше и попробовав себя. Предположим, что текущее имя проекта - ProjAbc, и вы хотите переименовать его в ProjDef:

  1. Выйдите из Xcode этого проекта.

  2. В Finder продублируйте папку НАД ProjAbc.xcodeproj для резервного копирования.

  3. В Finder свободно переименуйте папку НАД ProjAbc.xcodeproj, если вы чувствуете, что она вам нужна, чтобы соответствовать новому имени проекта.

  4. В Finder переименуйте папку с исходными файлами параллельно ProjAbc.xcodeproj с ProjAbc на ProjDef.

  5. Откройте Xcode для ProjAbc.xcodeproj (в Project Navigator все файлы в виртуальной исходной папке ProjAbc будут красного цвета).

  6. В Xcode щелкните (теперь сломанную) виртуальную папку в Project Navigator на левой боковой панели и переименуйте ее, чтобы она соответствовала имени в Finder - ProjDef. Это еще не исправит красные файлы внутри папки, но это нормально.

  7. В Xcode (по-прежнему выбирая виртуальную папку на левой боковой панели) на правой боковой панели в Инспекторе файлов щелкните значок, показанный на снимке экрана ниже, чтобы открыть диалоговое окно файла. В диалоговом окне файла выберите папку, которую вы ранее переименовали (ProjDef). Это повторно связывает виртуальную папку с реальной папкой на диске и автоматически исправляет ссылки на все файлы внутри. На рисунке показано, где щелкнуть значок папки в инспекторе файлов.

  8. В Xcode в Project Navigator щелкните имя проекта ProjAbc и переименуйте его в ProjDef.

    • Вам будет предложено: «Переименовать элементы содержимого проекта?». Нажмите кнопку «Переименовать».
    • Вам будет предложено: «Хотите, чтобы Xcode делал автоматические снимки перед переименованием проекта и аналогичными операциями?». Щелкните «Отключить» или «Включить». Не важно.
  9. В Xcode откройте «Параметры сборки» внутри цели ProjDef (внутри проекта ProjDef в Навигаторе проекта). Переименуйте имя папки и имя файла в файлах * -Info.plist и * -Prefix.pch, чтобы они содержали ProjDef вместо ProjAbc.

  10. В Xcode, в Project Navigator, в папке виртуальных источников ProjDef, в «Supporting Files», также снова переименуйте файлы * -Info.plist и * -Prefix.pch, чтобы они содержали ProjDef вместо ProjAbc.

  11. В меню Xcode нажмите Product / Scheme / Manage Schemes ... (или нажмите «ProjAbc»> имя схемы на панели схемы слева вверху Xcode и нажмите «Manage Schemes ...») и в диалоговом окне переименуйте Scheme из ProjAbc в ProjDef, затем нажмите кнопку «ОК». Если название проекта состоит из одного слова, вы можете запустить его прямо сейчас!

  12. В Xcode отредактируйте верхнюю строку комментария в файле Supporting Files / * - Prefix.pch и замените ProjAbc на ProjDef (2 раза). Конечно, исправлять этот комментарий необязательно.

  13. Закройте Xcode.

  14. В Finder укажите на ProjDef.xcodeproj и откройте его в текстовом редакторе. (Либо откройте его в TextWrangler.app, либо щелкните правой кнопкой мыши и во всплывающем меню нажмите «Показать содержимое пакета», затем отредактируйте файл project.pbxproj в TextEdit.app)

  15. В текстовом редакторе найдите «ProjAbc» (все слово, совпадение регистра), которое должно появиться один раз (в абзаце: / * Начало раздела PBXNativeTarget * / в строке: productName = ProjAbc;) и замените его на «ProjDef». Действительно, проект все равно можно запустить !, поэтому этот шаг не является обязательным.

  16. если имя проекта состоит из 2 или более отдельных слов, например "ProjDef Geh", то вы ДОЛЖНЫ выполнить следующие шаги: Найдите ссылку на папку Finder в папке виртуальных исходных файлов -

    • Найдите строку: path = ProjDef Geh;
    • Он появится один раз, в абзаце / * ProjDef Geh * /
    • Замените его строкой: path = "ProjDef Geh";
  17. Сохраните из текстового редактора и выйдите из текстового редактора.

  18. Вот и все. Как написано выше, если имя проекта состоит из одного слова, вы можете запустить его сразу в конце шага 11.

mlev
источник
Вы сделали это более сложным, чем должно быть. Если вы сначала выполните шаг 8 (переименование проекта), а затем шаг 4 (переименование исходной папки), он автоматически переименует ваши файлы Info.plist и Prefix.pch, поэтому вы можете пропустить шаги 9 и 10.
Ник Локвуд,
0

Я нашел приведенные выше ответы действительно полезными, особенно ответ Ника Локвуда.

Я только что переименовал пару папок в Xcode 8 и обнаружил еще две проблемы: A) «ошибки отсутствуют в рабочей копии» B) Сбой Core Data .

Как решить эти две проблемы:

А) « ошибки отсутствуют в рабочей копии »

Я нашел следующий ответ очень полезным: Swift 3 / Xcode 8 Upgrade - 100 файлов DerivedData отсутствуют в ошибках рабочей копии.

В основном Xcode 8 имеет строгий контроль версий, что может привести к указанным выше ошибкам. Ты должен:

  1. Очистите производные данные Xcode.
  2. Перейдите в Source Control и нажмите Refresh Status.
  3. Зайдите в Source Control и нажмите Commit; выберите все файлы на левой боковой панели меню фиксации при фиксации (щелкните правой кнопкой мыши -> Выбрать все).
  4. Вероятно, вы получите ошибку.
  5. Закройте меню фиксации.
  6. Обновить статус.
  7. Закройте свой проект, выйдя из Xcode.
  8. Снова откройте свой проект, обновите статус, повторите фиксацию.
  9. На этот раз фиксация должна работать.
  10. Щелкните Проект -> Очистить.

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

Б) Core Data вылетает

Переименование папок иногда приводит к сбоям в работе Core Data. Есть несколько возможных причин, почему это так, и ниже я могу предложить некоторые исправления:

  1. Неверное название модели AppDelegate . Так было в моей ситуации. Зайдите в свой AppDelegate и найдите let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME"). Убедитесь, что имя правильное.

    В будущем (через несколько лет после этой публикации, когда Apple снова изменит Core Data) или если вы используете старую версию Core Data, внимательно посмотрите на AppDelegate. Вероятно, там есть что-то странное, что портит ваши Core Data.

  2. Неверное название модели в xcdatamodeld . Перейдите в Finder и откройте свой .xcdatamodeld в текстовом редакторе.

Проверьте следующее:

<plist version="1.0">
  <dict>
     <key>_XCCurrentVersionName</key>
     <string>YOUR CORE DATA MODEL NAME.xcdatamodel</string>  <-- Make sure this is correct.
  </dict>
</plist>

Подробнее здесь: файлы модели Core Data не загружаются при переименовании

  1. Если две вышеперечисленные вещи не работают, попробуйте 1) удалить свою сущность, а затем добавить другую идентичную сущность или 2) удалить свой xcdatamodeld, а затем добавить другую идентичную модель данных (и убедиться, что имя нового xcdatamodeld совпадает с что находится в вашем AppDelegate и остальной части вашего кода). Никогда не делайте этого с живым приложением - или если вы это сделаете, убедитесь, что вы правильно перенесли свои основные данные при этом.
Hadoren
источник
0

Если у вас есть старая ссылка на исходный проект в вашем проекте, при дублировании проекта (каждое изменение влияет на оба проекта) здесь решение

  • Дублировать проект из исходного проекта
  • Переименуйте исходную папку исходного проекта, которая нарушает проблему со ссылками.
  • В дублированном проекте все становится красным. Выберите текущую папку проекта. (снимок экрана показан зеленой галочкой в ​​ответ на stackoverflow)

================================================== ======================

Рави Кумар
источник