Скопіювати та перейменувати проект Xcode та пов’язані з ним папки [закрито]


195

Я хотів би мати можливість копіювати весь проект Xcode, перейменовувати проект та пов'язані з ним файли без Xcode і без необхідності повторно імпортувати всі файли до проекту.

Відповіді:


368

Ця відповідь є кульмінацією різноманітних інших публікацій StackOverflow та навчальних посібників в Інтернеті, приведених в одне місце для моєї подальшої довідки та для того, щоб допомогти іншим, хто може зіткнутися з тією ж проблемою. Всі кредити надаються за інші відповіді наприкінці.

Копіювання проекту Xcode

  • У Finder скопіюйте папку проекту у потрібне місце нового проекту. На цьому етапі не перейменуйте ім'я файлу .xcodeproj або будь-які пов'язані з цим папки.

  • У Xcode перейменуйте проект. Виберіть проект із панелі навігатора (ліва панель). На панелі «Утиліти» (права панель) перейменуйте проект, прийміть зміни, які пропонує Xcode.

  • У Xcode перейменуйте схеми в "Керувати схемами", а також перейменуйте будь-які цілі, які у вас можуть бути.

  • Якщо ви не використовуєте ідентифікатор групи за замовчуванням, який містить поточний PRODUCT_NAME в кінці (тому оновиться автоматично), то змініть свій ідентифікатор групи на новий, який ви будете використовувати для свого дублірованного проекту.

Перейменування вихідної папки

Отже, виконуючи вищезазначені дії, у вас повинен бути продубльований і перейменований проект Xcode, який повинен скластись і скласти успішно, однак папка вихідного коду все одно буде називатися такою, якою вона була в оригінальному проекті. Це не спричиняє жодних проблем із компілятором, але це не найяскравіша структура файлів, щоб люди могли переходити до SCM тощо. Щоб перейменувати цю папку, не порушуючи всіх посилань на файли, виконайте наступні дії:

  • У Finder перейменуйте папку-джерело. Це порушить ваш проект, оскільки Xcode автоматично не виявить зміни. Усі ваші списки файлів xcode втратять посилання на фактичні файли, тому всі стануть червоними.

  • У Xcode натисніть на віртуальну папку, яку ви перейменували (це, ймовірно, буде вгорі, саме під вашим фактичним .xcodeproject) Перейменуйте це, щоб відповідати імені в Finder, це нічого не виправить і суворо не є необхідний крок, але приємно, щоб імена файлів відповідали.

  • У Xcode виберіть папку, яку ви перейменували на панелі навігації. Потім на панелі «Утиліти» (крайній правий край) клацніть піктограму, що нагадує темно-сіру папку, прямо під спальним меню «Місцезнаходження». Звідси перейдіть до перейменованої папки у пошуку і натисніть «Вибрати». Це автоматично відновить всі ваші файли, і вони більше не повинні з’являтися червоними в навігаційній панелі Xcode.

Піктограма для натискання

  • У налаштуваннях побудови проекту / цілей знайдіть стару назву папки та перейменуйте вручну всі події, які ви знайдете. Зазвичай є одна для prefix.pch та одна для info.plist, але їх може бути більше.

  • Якщо ви використовуєте будь-які сторонні бібліотеки (Testflight / Hockeyapp / тощо), вам також потрібно буде знайти "Шляхи пошуку бібліотеки" та перейменувати будь-які випадки старого імені файлу і тут.

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

Це повинно дозволяти дублювати та перейменовувати проект xcode та всі пов’язані з ним файли без необхідності вручну редагувати будь-які файли xcode та ризикувати зіпсувати речі.

Кредити

Велика подяка віддається Ніку Локвуду та Полі Глотту за надання окремих відповідей на цю проблему.


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/… (відповідь Даніеля)
Fattie

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 на назві проекту (синій верхній значок) та перейменуйте його на все, що вам подобається.

ПРИМІТКА: Після перейменування проекту та натискання кнопки «Enter» він запропонує автоматично змінити всі записи, пов’язані з іменем проекту, і дозволить вам відмінити деякі з них, якщо ви хочете. Виберіть їх і натисніть кнопку ОК.

4- Перейменуйте схему

a) Клацніть меню прямо біля кнопки зупинки та виберіть Керувати схемами.

b) Одноразовим натисканням клавіші або натисніть клавішу Enter на старій схемі імен та перейменуйте її на все, що завгодно.

в) Натисніть кнопку ОК.

5 - Створіть і запустіть, щоб переконатися, що він працює.

ПРИМІТКИ. На даний момент усі важливі файли проекту слід перейменовувати, за винятком коментарів до класів, створених під час створення проекту, ні вихідної папки. Далі ми будемо перейменовувати папку у файловій системі.

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

7- Перейменуйте головну та вихідну папку.

8- Клацніть правою кнопкою миші .xcodeprojфайл пакета проекту та виберіть у контекстному меню пункт «Показати зміст пакета». Відкрийте файл .pbxproj за допомогою будь-якого текстового редактора.

9- Знайдіть і замініть будь-яке виникнення оригінального імені папки новим іменем папки.

10- Збережіть файл.

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

12- Готово.

EDIT 10/11/19:

Існує інструмент для перейменування проектів у Xcode. Я ще не намагався його досить коментувати. https://github.com/appculture/xcode-project-renamer


2
Питання полягало у копіюванні та перейменуванні скопійованого проекту. Ця відповідь призначена лише для перейменування існуючого проекту.
martinjbaker

1
Це для мене найпростіший підхід. Просто скопіюйте оригінальну папку проекту, наприклад, MyProject, рекурсивно в "MyNewProject". Потім відкрийте MyNewProject і перейдіть до інструкцій fs_tigre. Я здивований, що ні Android Studio, ні Xcode не надають варіант "Файл-> Клон", який був би таким зручним. Можливо, приємний проект плагіна для когось ( nshipster.com/xcode-plugins )?
Блістер-арахіс

Єдиний метод, який працював для мене - XCode 8.2
GreenAsJade

2
Крок 10.1 - Якщо у вас є з'єднання файлів заголовка та / або прав, перейменуйте їх, щоб відобразити ваше нове ім'я. Якщо ви використовуєте Cocoapods, відредагуйте ім’я у вашому файлі стручка.
Девід Ларі

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


2
Це працює лише для того, щоб перейменувати внутрішню програму програми, але зовні папки для цього додатка залишаються незмінними
smac89


2

Я використовую цей сценарій після перейменування свого iOS Project. Це допомагає змінити ім'я каталогів та синхронізувати назви.

http://github.com/ytbryan/rename

ПРИМІТКА. Вам потрібно буде вручну змінити назву схеми.


1

У прикладі коду книги "Миттєвий 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

0

Ще одне, що потрібно спробувати!

Коли я скопіював усі свої файли, відкрив проект та перейменував його, усе змінилося на мою нову назву проекту, крім тестової цілі! У мене з’явилася помилка лінкера, яка сказала, що мені не вистачає файлу під назвою "myOldProjectname.app". Ось що це виправило:

  1. Клацніть на налаштуваннях проекту та виберіть тестову ціль введіть тут опис зображення

  2. Клацніть на налаштуваннях збірки та знайдіть "тестовий хост" введіть тут опис зображення

  3. Перевірте ці 2 файлові контури. Цілком ймовірно, що ці 2 шляхи все ще вказують на вашу стару назву проекту. введіть тут опис зображення

Сподіваюся, що це допомагає!


0

Для тих, хто має інші проблеми з збоями в раскадровці після копіювання проекту, перейдіть до Main.storyboard в розділі Інспектор ідентичності.

Далі переконайтеся, що ваш поточний модуль є правильним перейменованим модулем, а не старим.


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. Назва схеми не буде змінено (так чи інакше проект запускається і збирається нормально)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.