Zduplikuj i zmień nazwę projektu Xcode i powiązanych folderów [zamknięte]

195

Chciałbym móc zduplikować cały projekt Xcode, zmienić nazwę projektu i powiązanych plików bez myślenia Xcode i bez konieczności ręcznego ponownego importowania wszystkich plików do projektu.

Sammio2
źródło

Odpowiedzi:

368

Ta odpowiedź jest zwieńczeniem różnych innych postów i samouczków StackOverflow w Internecie umieszczonych w jednym miejscu w celu uzyskania w przyszłości odniesienia i pomocy wszystkim osobom, które mogą mieć ten sam problem. Na końcu przyznawane są inne odpowiedzi.

Duplikowanie projektu Xcode

  • W Finderze skopiuj folder projektu do żądanej lokalizacji nowego projektu. Na tym etapie nie zmieniaj nazwy nazwy pliku .xcodeproj ani żadnych powiązanych folderów.

  • W Xcode zmień nazwę projektu. Wybierz projekt z panelu nawigacyjnego (lewy panel). W panelu Narzędzia (prawy panel) zmień nazwę swojego projektu, Zaakceptuj zmiany, które proponuje Xcode.

  • W Xcode zmień nazwy schematów w „Zarządzaj schematami”, zmień także nazwy wszystkich celów, które możesz mieć.

  • Jeśli nie używasz domyślnego identyfikatora pakietu, który zawiera bieżący PRODUCT_NAME na końcu (więc zaktualizuje się automatycznie), zmień swój identyfikator pakietu na nowy, którego będziesz używać w swoim zduplikowanym projekcie.

Zmiana nazwy folderu źródłowego

Tak więc po wykonaniu powyższych kroków powinieneś mieć zduplikowany projekt Xcode o zmienionej nazwie, który powinien się pomyślnie kompilować i kompilować, jednak folder kodu źródłowego nadal będzie miał nazwę taką, jak w oryginalnym projekcie. Nie powoduje to żadnych problemów z kompilatorem, ale nie jest to najczystsza struktura plików dla osób poruszających się w SCM itp. Aby zmienić nazwę tego folderu bez zerwania wszystkich linków do plików, wykonaj następujące kroki:

  • W Finderze zmień nazwę folderu źródłowego. Spowoduje to uszkodzenie twojego projektu, ponieważ Xcode nie wykryje automatycznie zmian. Wszystkie Twoje listy plików xcode stracą swoje linki do rzeczywistych plików, więc wszystkie zmienią kolor na czerwony.

  • W Xcode kliknij folder wirtualny, którego nazwę zmieniłeś (najprawdopodobniej będzie to na samej górze, tuż pod twoim rzeczywistym .xcodeproject) Zmień nazwę, aby pasowała do nazwy w Finderze, to nic nie naprawi i ściśle nie jest wymagany krok, ale miło jest dopasować nazwy plików.

  • W Xcode wybierz folder, którego nazwa właśnie zmieniłeś w panelu nawigacji. Następnie w panelu Narzędzia (po prawej stronie) kliknij ikonę, która wygląda jak ciemnoszary folder, tuż pod menu rozwijanym „Lokalizacja”. Stąd przejdź do folderu o zmienionej nazwie w wyszukiwarce i kliknij „Wybierz”. Spowoduje to automatyczne ponowne skojarzenie wszystkich plików i nie powinny już być wyświetlane na czerwono w okienku nawigacji Xcode.

Ikona do kliknięcia

  • W ustawieniach kompilacji projektu / celów wyszukaj nazwę starego folderu i ręcznie zmień nazwę wszystkich znalezionych wystąpień. Zwykle jest jeden dla prefiksu.pch i jeden dla info.plist, ale może być więcej.

  • Jeśli korzystasz z bibliotek stron trzecich (Testflight / Hockeyapp / etc), musisz także wyszukać „Library Search Paths” i zmienić tutaj również nazwy wszystkich wystąpień starej nazwy pliku.

  • Powtórz ten proces dla wszystkich folderów kodu źródłowego testu jednostkowego, które może zawierać Twój projekt, proces jest identyczny.

Powinno to pozwolić na powielenie i zmianę nazwy projektu xcode i wszystkich powiązanych plików bez konieczności ręcznej edycji plików xcode i ryzykować zepsucie.

Kredyty

Ogromne podziękowania należą się Nickowi Lockwoodowi i Paulyowi Glottowi za udzielenie osobnych odpowiedzi na ten problem.

Sammio2
źródło
3
Po wykonaniu powyższych czynności właśnie przeszukałem projekt dziury w poszukiwaniu „starej nazwy” i znalazłem to, co wymagało zmiany (nagłówek Prefiksu) i skompilowałem się z „nową nazwą” w innym miejscu. Świetny samouczek - dokładnie to, czego potrzebowałem. (Testowane w Xcode 5.0.1 / iOS 7.0)
Mac
Wydawało się, że nie doprowadziło mnie to do końca (na Xcode 5.0.2 tutaj, z projektem, który został migrowany z 4.6.3 do 5.0.0). W *.xcodeproj/project.pbxprojpliku było wiele rzeczy , które zawierały oryginalną ścieżkę folderu. W szczególności kompilacja nie udała się, ponieważ wciąż szukała info.plist w oryginalnym folderze.
Steven Lu,
2
Jako ciekawostkę, oto rodzaj starej szkoły, aby to zrobić ... stackoverflow.com/questions/10006482/ ... (odpowiedź Daniela)
Fattie
1
Xcode 7.1.1 zawiesza się dla mnie przy pierwszej przeszkodzie - zmianie nazwy projektu. Zbadam sprawę, ale czy ktoś to znalazł?
HughHughTeotl
5
Brakuje sposobu obsługi, gdy masz integrację Cocoapods w projekcie. Znalazłem też pomocny link, aby sobie z tym poradzić: h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK
30

Publikuję to, ponieważ od zawsze miałem problemy ze zmianą nazwy projektu XCode.

Zmiana nazwy projektu jest dobra i prosta, ale nie zmienia to nazwy folderu źródłowego. Oto krok po kroku to, co zrobiłem, które świetnie działało w Xcode 4 i 5 dzięki poniższym linkom.

Linki REF:
Zmień nazwę projektu.
Zmień nazwę folderu źródłowego i innych plików.

1- Utwórz kopię zapasową projektu.

Jeśli używasz git, zatwierdź wszelkie zmiany, zrób kopię całego folderu projektu i wykonaj kopię zapasową w maszynie czasu przed dokonaniem jakichkolwiek zmian (ten krok nie jest wymagany, ale zdecydowanie zalecam).

2- Otwórz swój projekt.

3- Powoli kliknij dwukrotnie lub naciśnij Enter na nazwie projektu (niebieska górna ikona) i zmień nazwę na dowolną.

UWAGA: Po zmianie nazwy projektu i naciśnięciu klawisza „enter” zasugeruje automatyczną zmianę wszystkich pozycji związanych z nazwą projektu i pozwoli ci cofnąć wybór niektórych z nich, jeśli chcesz. Wybierz je wszystkie i kliknij OK.

4 - Zmień nazwę programu

a) Kliknij menu tuż obok przycisku zatrzymania i wybierz Zarządzaj schematami.

b) Pojedyncze kliknięcie lub naciśnięcie klawisza Enter na starym schemacie nazw i zmiana nazwy na dowolną.

c) Kliknij OK.

5 - Zbuduj i uruchom, aby upewnić się, że działa.

UWAGI: W tym momencie należy zmienić nazwę wszystkich ważnych plików projektu, z wyjątkiem komentarzy w klasach utworzonych podczas tworzenia projektu ani folderu źródłowego. Następnie zmienimy nazwę folderu w systemie plików.

6- Zamknij projekt.

7- Zmień nazwę głównego i źródłowego folderu.

8- Kliknij prawym przyciskiem myszy .xcodeprojplik pakietu projektu i wybierz „Pokaż zawartość pakietu” z menu kontekstowego. Otwórz plik .pbxproj w dowolnym edytorze tekstu.

9- Wyszukaj i zamień dowolne wystąpienie oryginalnej nazwy folderu na nową nazwę folderu.

10- Zapisz plik.

11 - Otwórz projekt XCode, przetestuj go.

12 - Gotowe.

EDYCJA 10/11/19:

W Xcode jest narzędzie do zmiany nazw projektów. Nie wypróbowałem go wystarczająco, aby skomentować. https://github.com/appculture/xcode-project-renamer

fs_tigre
źródło
2
Pytanie dotyczyło powielenia, a następnie zmiany nazwy skopiowanego projektu. Ta odpowiedź służy tylko zmianie nazwy istniejącego projektu.
martinjbaker
1
To jest dla mnie najprostsze podejście. Po prostu skopiuj oryginalny folder projektu, np. MyProject, rekurencyjnie do „MyNewProject”. Następnie otwórz MyNewProject i postępuj zgodnie z instrukcjami fs_tigre. Dziwi mnie, że ani Android Studio, ani Xcode nie oferują opcji „Plik-> Klonowanie projektu”, która byłaby tak wygodna. Może fajny projekt wtyczki dla kogoś ( nshipster.com/xcode-plugins )?
Blisterpeanuts
Jedyna metoda, która zadziałała dla mnie - XCode 8.2
GreenAsJade
2
Krok 10.1 - Jeśli masz pomostowe pliki nagłówka i / lub uprawnień, zmień ich nazwy, aby odzwierciedlić swoją nową nazwę. Jeśli używasz Cocoapods, edytuj nazwę w pliku pod.
David Lari,
6

Od XCode 7 stało się to znacznie łatwiejsze.

Apple udokumentowało proces na swojej stronie: https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/RenamingaProject/RenamingaProject.html

Aktualizacja: link XCode 8: http://help.apple.com/xcode/mac/8.0/#/dev3db3afe4f

PBICS
źródło
2
Działa to tylko w celu zmiany nazwy elementów wewnętrznych aplikacji, ale zewnętrznie foldery aplikacji pozostają niezmienione
smac89
2

Używam tego skryptu po zmianie nazwy mojego projektu iOS. Pomaga zmienić nazwę katalogów i synchronizować nazwy.

http://github.com/ytbryan/rename

UWAGA: musisz ręcznie zmienić nazwę schematu.

ytbryan
źródło
1

W przykładowym kodzie książki „Instant OpenCV na iOS” znalazłem skrypt bash, który kopiuje projekt z folderu do innego.
Przeprowadzając małe badania, znalazłem post na blogu, który wydaje się być oryginalnym autorem skryptu: http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html , gdzie możesz pobrać skrypt . Próbowałem uruchomić go z takiego terminala

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

działa w porządku.
Dodatkowe informacje można znaleźć otwierając plik za pomocą edytora tekstu. Mam nadzieję, że to pomaga

Giorgio Tempesta
źródło
0

Używam Xcode 6+ i po prostu:

  • Skopiuj wszystkie pliki z folderów projektu do nowych folderów (o nowej nazwie).
  • otwarty *.xcodeproj or *.xcworkspace
  • Zmień nazwę projektu.
  • Kliknij schemat, usuń bieżącą chemę i dodaj nową.

Tutaj jest zrobione, ale nazwa okna Xcode i *.xcodeproj or *.xcworkspacenadal <old-name>. Następnie robię:

  • pop install
  • otwarty <new name>.xcworkspace
SLyHuy
źródło
0

Jeszcze jedna rzecz do wypróbowania!

Kiedy skopiowałem wszystkie moje pliki, otworzyłem projekt i zmieniłem jego nazwę, wszystko zmieniło się na nazwę mojego nowego projektu, z wyjątkiem celu testowego! Wystąpił błąd linkera, który powiedział, że brakuje mi pliku o nazwie „myOldProjectname.app”. Oto, co to naprawiło:

  1. Kliknij ustawienia projektu i wybierz cel testowy wprowadź opis zdjęcia tutaj

  2. Kliknij ustawienia kompilacji i wyszukaj „host testowy” wprowadź opis zdjęcia tutaj

  3. Sprawdź te 2 ścieżki plików. Możliwe, że te 2 ścieżki nadal wskazują na nazwę twojego starego projektu. wprowadź opis zdjęcia tutaj

Mam nadzieję, że to pomaga!

erparker
źródło
0

Jeśli ktoś ma problemy z awariami scenariuszy po skopiowaniu projektu, przejdź do Main.storyboard w obszarze Identity Inspector.

Następnie sprawdź, czy bieżący moduł jest poprawnym modułem o zmienionej nazwie, a nie starym.

Wraithseeker
źródło
0

Używam prostego skryptu BASH do zmiany nazwy.

Stosowanie: ./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}"

Uwagi:

  1. Ten skrypt zignoruje wszystkie pliki, takie jak .giti.DS_Store
  2. Nie będzie działać, jeśli stara nazwa / nowa nazwa zawiera spacje
  3. Może nie działać, jeśli używasz kapsułek (nie testowano)
  4. Nazwa schematu nie zostanie zmieniona (w każdym razie projekt działa i kompiluje się normalnie)
Anton Malmygin
źródło