Zmiana nazwy projektu xcode 4 i rzeczywistego folderu

119

Wiem, jak zmienić nazwę projektu w Xcode 4, ale jak zmienić nazwę folderu źródłowego? Chodzi o to, że zmiana nazwy projektu w Xcode powoduje zmianę nazwy tylko w Xcode (chociaż jest to postęp w porównaniu z poprzednim) - ale dlaczego Xcode nie zmienia nazwy folderu w systemie plików, nie wiem.

Chris G.
źródło
Czy próbowałeś właśnie zmienić nazwę folderu?
David Brown,
2
Mam znajomego, a wtedy brakuje wszystkich plików w pliku projektu - wszystkie są oznaczone jako przeczytane, ponieważ nie mają żadnego odniesienia. Ale znalazłem soultion - zobacz moją odpowiedź. Dzięki za odpowiedź
Chris G.

Odpowiedzi:

259

Możesz to zrobić z poziomu Xcode bez uciekania się do ręcznej edycji pliku pbxproj w edytorze tekstu!

Oto jak:

  1. Zmień nazwę folderu źródłowego w Finderze. Spowoduje to początkowe zerwanie projektu, ponieważ Xcode nie wykrywa automatycznie, kiedy rzeczywiste foldery, na które wskazują wirtualne (żółte) foldery projektu, ulegają zmianie, więc wszystkie pliki w tym folderze staną się czerwone w Xcode. Nie martw się o to, naprawimy to w kroku 3.

  2. W Xcode kliknij (teraz zepsuty) folder wirtualny na lewym pasku bocznym i zmień jego nazwę, aby pasowała do nazwy w Finderze (możesz nazwać go jak chcesz lub w ogóle nie zmieniać nazwy, ale to byłoby szalone ). To nie naprawi czerwonych plików w folderze, ale to jest w porządku.

  3. Na prawym pasku bocznym w Xcode kliknij ikonę pokazaną na poniższym zrzucie ekranu, aby wyświetlić okno dialogowe pliku. Wybierz folder, którego nazwa została zmieniona. Spowoduje to ponowne skojarzenie folderu wirtualnego z rzeczywistym folderem na dysku i automatycznie naprawi łącza do wszystkich plików w środku.

  4. W ustawieniach kompilacji wyszukaj starą nazwę folderu i ręcznie zmień nazwy wszelkich znalezionych wystąpień. Zwykle będą dwa z nich, oldfolder / prefix.pch i oldfolder / info.plist, ale mogą być inne.

Gotowe!

wprowadź opis obrazu tutaj

EDYCJA: ta opcja jest nadal dostępna w Xcode 5, ale jest domyślnie ukryta. Aby go pokazać, kliknij cienki nagłówek „Tożsamość i typ” w inspektorze nad panelem „Ustawienia tekstu”, aby go rozwinąć.

Nick Lockwood
źródło
Wspaniale Dodałbym tylko, że jeśli zmiana nazwy jest częścią zmiany nazwy całego projektu, jest jeszcze jeden krok: Zmień „Nazwę projektu” w prawym górnym obszarze i pozwól Xcode na wewnętrzną zmianę nazwy wszystkiego, aby pasowała.
RedYeti
1
Wszystko działało świetnie, a nazwa projektu została zmieniona, ale komunikat o kompilacji u góry i nazwa z symulatora nadal zachowały starą nazwę, aby to zmienić: Przejdź do menu produktów, zarządzaj schematami i zmień nazwę schematu
BlackTigerX
Prawdziwe. Możesz także po prostu usunąć schemat i nacisnąć przycisk automatycznego tworzenia schematów.
Nick Lockwood
Czy ktoś wie, jak to zrobić w xCode 5? Nie widzę już tego magicznego przycisku. :(
Jason
Wciąż tam jest, jest po prostu ukryty. Musisz rozwinąć wiersz „Tożsamość i typ” w inspektorze, klikając go. Zajęło mi to około 20 minut!
Nick Lockwood
112

Robiłem to dziesiątki razy:

  • Zmień nazwę projektu, klikając, a następnie edytując tytuł w nawigatorze projektu Xcode.
  • Zamknij Xcode.
  • Zmień nazwę folderu źródłowego.
  • W Finderze otwórz .pbxprojplik w pakiecie projektu (menu kontekstowe „Pokaż zawartość pakietu”) za pomocą dowolnego edytora tekstu.
  • Wyszukaj i zamień dowolne wystąpienie oryginalnej nazwy folderu na nową nazwę folderu.
  • Zapisz plik.
  • Otwórz projekt Xcode.
djromero
źródło
3
Pamiętaj tylko, aby to zrobić po zmianie nazwy projektu
Aram Kocharyan,
Postępuję zgodnie z twoimi instrukcjami i zawodzę. Wydaje mi się, że problem tkwi w „Wyszukaj i zamień wszelkie wystąpienia oryginalnej nazwy folderu na nową nazwę folderu”. Czy mógłbyś podać bardziej szczegółowe instrukcje na tym etapie? Dzięki
Philip007,
Sposób wyszukiwania i zamiany zależy od wybranego edytora tekstu lub narzędzia. W moim przypadku z vimem: <ESC>:% s / old / new / g <ENTER> Może się nie powieść, jeśli w pliku projektu jest coś innego z kolidującą nazwą.
djromero
Dzięki @madmw, rozgryzłem to. Używam TextEdit. Myślę, że sztuczka polega na zamianie atrybutu „Zawiera” na „Pełne słowo” podczas przeprowadzania wyszukiwania i zamiany. Poniżej zamieszczam szczegółową instrukcję.
Philip007
Działa wspaniale! Zmieniając nazwę folderu celu, na przykład biblioteki statycznej, musiałem również zepsuć moje schematy, a także zmienić nazwę nagłówka prefiksu i pliku info plist.
Tim Potter
12

Zadanie: zmień nazwę „Play” na „Play2” zarówno w Xcode, jak iw Finderze

Zmień to:

wprowadź opis obrazu tutaj

Do tego:

wprowadź opis obrazu tutaj

KROKI:

// Przed wszystkim wykonaj kopię zapasową projektu w Finderze!

  • Zmień nazwę projektu w nawigatorze projektu Xcode // Kliknij nazwę projektu, a następnie naciśnij Enter
  • Zmień nazwę grupy w nawigatorze projektu Xcode // bez wpływu na nazwę folderu w Finderze
  • Zamknij Xcode
  • Zmień nazwę folderu zewnętrznego (lewa kolumna na obrazie) w Finderze

// Wszystkie powyższe kroki są proste i bez efektów ubocznych // // Teraz najtrudniejsza część: zmień nazwę folderu wewnętrznego (środkowa kolumna na obrazku) w Finderze (tego na tym samym poziomie co .xcodeproj)

  • Zmień nazwę folderu wewnętrznego w Finderze, pozostawiając Xcode zamknięte
  • Kliknij prawym przyciskiem myszy .xcodeproj, wybierz „Pokaż zawartość pakietu”
  • Otwórz plik .pbxproj w Mac TextEdit
  • Wyszukaj i zamień wszystkie „Play” na „Play2”. Aby zagwarantować, że wszystko pójdzie dobrze, kliknij strzałkę po lewej stronie paska wyszukiwania i zmodyfikuj atrybut wyszukiwania. Zmień „Zawiera” na „Pełne słowo” i odznacz „Ignoruj ​​wielkość liter”
  • Zapisz plik .pbxproj
  • Otwórz projekt Xcode i uruchom
Philip007
źródło
4

Oto jak skutecznie zmienić nazwę projektu w XCode4 (W TYM FOLDER PLIKÓW):

  1. Zamknij wszystkie otwarte projekty całkowicie w XCode, aby zapobiec problemom
  2. Skopiuj dany projekt do nowego folderu (WAŻNE: ZACHOWAJ KOPIĘ ZAPASOWĄ STAREGO PROJEKTU)
  3. Otwórz projekt
  4. Zmień nazwę samego projektu w XCode4 (kliknij dwukrotnie nazwę projektu), zmień nazwę i postępuj zgodnie z instrukcjami (tak na wszystko)
  5. Przejdź do produktu, zarządzaj schematami i zmień nazwę schematu (kliknij dwukrotnie nazwę schematu)
  6. Zamknij projekt (upewnij się, że jest całkowicie zamknięty, w przeciwnym razie następne kroki nie będą działać)
  7. W Finderze przejdź do folderu Project i kliknij prawym przyciskiem myszy plik .xcodeproj, a następnie wybierz opcję „Pokaż zawartość pakietu”
  8. Następnie kliknij prawym przyciskiem myszy plik .pbxproj i otwórz go za pomocą TextEdit
  9. Zastąp wszystkie wystąpienia nazwy folderu, w którym były projekty (stara nazwa projektu dla nowej nazwy projektu)
  10. Zapisz plik
  11. Otwórz projekt ponownie i zbuduj go!
Mav55
źródło
Czy możesz podać bardziej szczegółowe instrukcje dotyczące kroku 9?
Philip007,
2

Po pierwsze - nie zmieniaj nazwy projektu Xcode !!!

Jeśli musisz, to może być pod spodem - nigdy nie udało mi się tego uruchomić, skończyło się na utworzeniu nowego projektu i rozpoczęciu kopiowania wszystkich istniejących plików. Xcode jest taki ach ... Ma wiele nieproduktywnych rzeczy, na przykład spróbuj zmienić nazwę pliku z „Name” na „name”. Cóż, baw się dobrze.

Znalazłem odpowiedź lub jak to obejść: Otwórz plik pbxproj, klikając prawym przyciskiem myszy „Pokaż zawartość pakietu”, a tam edytujesz plik project.pbxproj - musisz zmienić nazwę odniesienia o nazwie path i kilka innych rzeczy - po prostu wyszukaj nazwa folderu została dodana „/”.

To jest to. Mam nadzieję, że to komuś pomoże.

Chris G.
źródło
2
Wczoraj zmieniłem nazwę projektu i działało dobrze. Zgadzam się, że Xcode to „ahh”: D
manmal
Jest na to całkowicie bezpieczny i obsługiwany sposób - zobacz moją odpowiedź.
Nick Lockwood
2

Oto kolejny problem, o którym powinieneś wiedzieć podczas zastępowania wartości w pliku * .pbxproj. Jeśli nazwa Twojego starego folderu to FooBar, w pliku * .pbxproj pojawi się wpis, który wygląda następująco:

path = FooBar

Załóżmy, że nazwa nowego folderu to Foo Bar. Oznacza to, że wprowadzasz spację. Wtedy ta linia powinna stać się

path = "Foo Bar"

Jeśli wykonasz tylko proste wyszukiwanie i zamianę, wynikiem będzie plik * .pbxproj, którego Xcode nie może przeanalizować. Jeśli nazwa nowego folderu zawiera spację, a stara nazwa nie zawiera spacji, pamiętaj o umieszczeniu podwójnych cudzysłowów.

Zampano
źródło
2

Podsumowuję dla siebie, po przeanalizowaniu różnych odpowiedzi powyżej i wypróbowaniu siebie. Załóżmy, że aktualna nazwa projektu to ProjAbc i chcesz zmienić jej nazwę na ProjDef:

  1. Zamknij Xcode tego projektu.

  2. W Finderze zduplikuj folder POWYŻEJ ProjAbc.xcodeproj w celu wykonania kopii zapasowej.

  3. W Finderze możesz dowolnie zmienić nazwę folderu POWYŻEJ ProjAbc.xcodeproj, jeśli uważasz, że jest on potrzebny do nowej nazwy projektu.

  4. W Finderze zmień nazwę folderu plików źródłowych równolegle do ProjAbc.xcodeproj z ProjAbc na ProjDef

  5. Otwórz Xcode dla ProjAbc.xcodeproj (w Project Navigatorze wszystkie pliki w wirtualnym folderze źródłowym ProjAbc będą w kolorze czerwonym).

  6. W Xcode kliknij (teraz uszkodzony) folder wirtualny w Nawigatorze projektu na lewym pasku bocznym i zmień jego nazwę tak, aby odpowiadała nazwie w Finderze - ProjDef. To jeszcze nie naprawi czerwonych plików w folderze, ale to jest w porządku.

  7. W Xcode (nadal wybierając wirtualny folder na lewym pasku bocznym) na prawym pasku bocznym, w Inspektorze plików kliknij ikonę pokazaną na zrzucie ekranu poniżej, aby wyświetlić okno dialogowe pliku. W oknie dialogowym pliku wybierz folder, którego nazwa została zmieniona (ProjDef). Spowoduje to ponowne skojarzenie folderu wirtualnego z rzeczywistym folderem na dysku i automatycznie naprawi łącza do wszystkich plików w środku. Zdjęcie pokazuje, gdzie kliknąć ikonę folderu w Inspektorze plików

  8. W Xcode, w Project Navigator, kliknij nazwę projektu ProjAbc i zmień jej nazwę na ProjDef.

    • Pojawi się monit: „Zmienić nazwy elementów treści projektu?”. Kliknij przycisk „Zmień nazwę”.
    • Zostaniesz zapytany: „Czy chcesz, aby Xcode wykonywał automatyczne migawki przed zmianą nazwy projektu i podobnymi operacjami?”. Kliknij „Wyłącz” lub „Włącz”. Nie ważne.
  9. W Xcode, teraz otwórz "Ustawienia budowania" wewnątrz celu ProjDef (wewnątrz projektu ProjDef w Nawigatorze projektu). Zmień nazwę folderu i nazwę pliku zarówno * -Info.plist, jak i * -Prefix.pch, tak aby zawierały ProjDef zamiast ProjAbc.

  10. W Xcode, w Project Navigator, w folderze źródeł wirtualnych ProjDef, w "Supporting Files", również ponownie zmień nazwy plików * -Info.plist i * -Prefix.pch, aby zawierały ProjDef zamiast ProjAbc

  11. W menu Xcode naciśnij Produkt / Schemat / Zarządzaj schematami ... (lub kliknij „ProjAbc”> Nazwa schematu na pasku schematów w lewym górnym rogu Xcode i naciśnij „Zarządzaj schematami ...”) iw oknie dialogowym zmień nazwę schematu z ProjAbc do ProjDef, a następnie naciśnij przycisk "OK". Jeśli nazwa projektu składa się z jednego słowa, możesz go uruchomić właśnie teraz!

  12. W Xcode edytuj górną linię komentarza w pliku Supporting Files / * - Prefix.pch i zamień ProjAbc na ProjDef (2 razy). Oczywiście poprawienie tego komentarza jest opcjonalne.

  13. Zamknij Xcode.

  14. W Finderze wskaż ProjDef.xcodeproj i otwórz go w edytorze tekstu. (Otwórz go w TextWrangler.app lub kliknij prawym przyciskiem myszy i w wyskakującym menu naciśnij „Pokaż zawartość pakietu”, a następnie edytuj plik project.pbxproj w TextEdit.app)

  15. W Edytorze tekstu wyszukaj „ProjAbc” (całe słowo, wielkość liter), które powinno pojawić się raz (w akapicie: / * Begin PBXNativeTarget sekcja * / in line: productName = ProjAbc;) i zamień je na „ProjDef”. Rzeczywiście, projekt i tak mógłby działać!, Więc ten krok jest opcjonalny.

  16. jeśli nazwa projektu składa się z 2 lub więcej oddzielnych słów, takich jak „ProjDef Geh”, MUSISZ wykonać następujące kroki: Wyszukaj odniesienie do folderu Finder w folderze wirtualnych plików źródłowych -

    • Wyszukaj linię: path = ProjDef Geh;
    • Pojawi się raz, w akapicie / * ProjDef Geh * /
    • Zastąp go linią: path = "ProjDef Geh";
  17. Zapisz z edytora tekstu i zamknij edytor tekstu.

  18. Otóż ​​to. Jak napisano powyżej, jeśli nazwa projektu składa się z jednego słowa, możesz uruchomić bezpośrednio na końcu kroku 11.

mlev
źródło
Sprawiłeś, że jest to bardziej skomplikowane, niż powinno. Jeśli najpierw wykonasz krok 8 (zmiana nazwy projektu), przed krokiem 4 (zmiana nazwy folderu źródłowego) automatycznie zmieni nazwę pliku Info.plist i Prefix.pch, dzięki czemu możesz pominąć kroki 9 i 10.
Nick Lockwood
0

Powyższe odpowiedzi okazały się bardzo przydatne, zwłaszcza odpowiedź Nicka Lockwooda.

Właśnie zmieniłem nazwy kilku folderów w Xcode 8 i napotkałem jeszcze dwa problemy: A) „brak błędów kopii roboczej” B) awarie danych podstawowych .

Jak rozwiązać te dwa problemy:

A) „ Brak błędów kopii roboczej

Poniższa odpowiedź jest bardzo przydatna: Uaktualnienie Swift 3 / Xcode 8 - setki plików DerivedData brakuje w błędach kopii roboczej

Zasadniczo Xcode 8 ma rygorystyczną kontrolę źródła, co może prowadzić do powyższych błędów. Musisz:

  1. Wyczyść dane pochodne Xcode.
  2. Przejdź do kontroli źródła i kliknij Odśwież stan.
  3. Przejdź do kontroli źródła i kliknij Zatwierdź; podczas zatwierdzania zaznacz wszystkie pliki na lewym pasku bocznym menu zatwierdzania (kliknij prawym przyciskiem myszy -> Zaznacz wszystko).
  4. Prawdopodobnie pojawi się błąd.
  5. Zamknij menu Commit.
  6. Odśwież stan.
  7. Zamknij projekt, zamykając Xcode.
  8. Ponownie otwórz projekt, odśwież status, zatwierdź ponownie.
  9. Tym razem zatwierdzenie powinno działać.
  10. Kliknij Projekt -> Wyczyść.

Zakładam, że masz już włączoną kontrolę źródła. Jeśli nie, lub jeśli utkniesz, postępując zgodnie z moimi instrukcjami, po prostu postępuj zgodnie z bardziej szczegółowymi instrukcjami w podanym linku.

B) Awarie podstawowych danych

Zmiana nazw folderów czasami psuje dane podstawowe. Istnieje kilka możliwych powodów, dla których tak jest, a poniżej przedstawiam kilka poprawek, które mogę zasugerować:

  1. Nieprawidłowa nazwa modelu AppDelegate . Tak było w mojej sytuacji. Przejdź do AppDelegate i znajdź let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME"). Upewnij się, że nazwa jest poprawna.

    W przyszłości (kilka lat po tym poście, gdy Apple ponownie zmieni dane podstawowe) lub jeśli używasz starszej wersji danych podstawowych, przyjrzyj się uważnie AppDelegate. Prawdopodobnie jest tam coś dziwnego, co miesza z Twoimi podstawowymi danymi.

  2. Nieprawidłowa nazwa modelu w xcdatamodeld . Przejdź do Findera i otwórz plik .xcdatamodeld w edytorze tekstu.

Sprawdź co następuje:

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

Więcej szczegółów tutaj: Pliki modelu Core Data nie są ładowane przy zmianie nazwy

  1. Jeśli dwie powyższe rzeczy nie działają, spróbuj 1) usunąć swoją encję, a następnie dodać inną jednostkę, która jest identyczna lub 2) usunąć xcdatamodeld, a następnie dodać kolejny model danych, który jest identyczny (i upewnij się, że nazwa nowego xcdatamodeld jest zgodna co znajduje się w AppDelegate i reszcie kodu). Nigdy nie rób tego za pomocą działającej aplikacji - lub jeśli to zrobisz, pamiętaj o prawidłowej migracji danych podstawowych.
Hadoren
źródło
0

Jeśli masz stare odniesienie do projektu źródłowego w swoim projekcie, po opublikowaniu projektu (każda zmiana ma wpływ na oba projekty) tutaj rozwiązanie

  • Opublikuj projekt z projektu źródłowego
  • Zmień nazwę folderu źródłowego projektu źródłowego, który łamie problem z odniesieniami.
  • W projekcie publikacji wszystko staje się czerwone, wybierz aktualny folder projektu. (zrzut ekranu pokazuje odpowiedź zielonego ptaszka na przepełnienie stosu)

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

Ravi Kumar
źródło