Xcode: co to jest cel i schemat w prostym języku?


Odpowiedzi:


309

Dodałem też w Workspace i Project!

  • Obszar roboczy - zawiera jeden lub więcej projektów . Projekty te zwykle odnoszą się do siebie
  • Projekt - zawiera kod i zasoby itp. (Przyzwyczaisz się do nich!)
  • Cel - każdy projekt ma jeden lub więcej celów.
    • Każdy cel określa listę ustawień kompilacji dla tego projektu
    • Każdy cel definiuje także listę klas, zasobów, niestandardowych skryptów itp., Które należy uwzględnić / wykorzystać podczas budowania.
    • Cele są zwykle używane dla różnych dystrybucji tego samego projektu.
      • Na przykład mój projekt ma dwa cele: kompilację „normalną” i kompozycję „biurową”, która ma dodatkowe funkcje testowania i może zawierać kilka ścieżek muzyki w tle oraz przycisk do zmiany ścieżki (tak jak obecnie).
      • Będziesz przyzwyczajony do dodawania klas i zasobów do domyślnego celu podczas ich dodawania.
      • Możesz wybrać, które klasy / zasoby zostaną dodane do którego celu.
        • W moim przykładzie mam klasę „DebugHandler”, która została dodana do mojej kompilacji pakietu Office
      • Jeśli dodasz testy, spowoduje to również dodanie nowego celu.
  • Schemat - schemat określa, co dzieje się po naciśnięciu przycisku „Kompiluj”, „Test”, „Profil” itp.
    • Zwykle każdy cel ma co najmniej jeden schemat
    • Możesz automatycznie tworzyć schematy dla swoich celów, przechodząc do Schemat> Zarządzaj schematami i naciskając „Automatycznie twórz schematy teraz”

Spróbujmy, jeśli dobrze zrozumiałem ... Programuję aplikację i stawiam dwa cele. Jeden, który prześlę do sklepu z aplikacjami i taki, w którym opracowuję już kolejną wersję tej samej aplikacji. A w schematach robię na przykład jeden schemat dla obu celów do uruchomienia i jeden schemat do debugowania? Ale dlaczego potrzebuję do tego różnych schematów? Nie zrozumiałem przewagi BJ Homera ..
MichiZH,

FWIW, nie używam różnych schematów do wydania i debugowania, chyba że dodam dodatkowe funkcje debugowania, takie jak opisane w mojej odpowiedzi.
James Webster,

2
Doskonałe wyjaśnienie, stary! ! !
Sagar Kalathil

6
co masz na myśli, że twoja biurowa wersja ma przycisk muzyczny na dole Czy Twoja aplikacja ma dodatkowy kod, który jest aktywowany tylko w pakiecie biurowym, czy też muzyka jest odtwarzana na komputerze Mac. Przepraszam, że jestem zdezorientowany
3366784,

Ten rodzaj określa, co składa się na każdą koncepcję, ale nie określa celu każdego przedmiotu. Dla mnie o to pytał OP.
O'Rooney

66

Cel jest końcowy produkt stworzony przez uruchomienie „budować” w Xcode. Może to być aplikacja, środowisko, biblioteka statyczna lub pakiet testów jednostkowych. Cokolwiek to jest, ogólnie odpowiada pojedynczemu elementowi w folderze „produkty wbudowane”.

Schemat przedstawia zbiór celów, które pracować razem. Określa, które cele są używane, gdy wybierasz różne akcje w Xcode (Uruchom, Test, Profil itp.). Często masz tylko jeden schemat, który używa głównego celu aplikacji dla akcji Uruchom, Archiwum i Profil oraz docelowy test jednostkowy dla akcji Test. Jeśli tworzysz dwie powiązane aplikacje, możesz mieć dwa schematy, które wykorzystywały ten sam pakiet testów jednostkowych, ale różne cele aplikacji.

Główną zaletą schematów (wprowadzonych w Xcode 4) jest to, że pozwalają one przełączać się między uruchomieniem aplikacji a testami jednostkowymi bez konieczności przełączania wybranego celu.


61

Jestem osobą wizualną, dlatego aby wyjaśnić koncepcję, użyję schematu.

Gdy masz wiele celów , można je dopasować jeden do jednego z działaniami Xcode Run, Test, Profile, ta koncepcja definiuje schemat

wprowadź opis zdjęcia tutaj

Cel jest wersją swojego projektu , tj cele różnią się nieznacznie w klasach i zasobów do użytku podczas zbudowany czasie. Projekt może mieć wiele ustawień czasu budowy dla oddzielnych wymagań dotyczących dystrybucji.


7
Ten schemat wydaje się błędny. Schemat powinien być powiązany z konkretnym celem, nie widzę, gdzie w ramach schematu możesz mieć wiele celów.
Boon,

6
@Boon Nie, nieostrożnie Boho W edytorze schematów kliknij element „build” po lewej stronie. W obszarze po prawej stronie kliknij „+”, aby dodać więcej celów do tego schematu. Zaznacz pola zgodnie z potrzebami. Pliki wykonywalne tych celów są następnie dostępne w innych działaniach (Uruchom, Profil itp.) W menu rozwijalnym plików wykonywalnych.
occulus

Jest to dobre, ale brakuje części schematów konfiguracji kompilacji. Myślę, że schemat jest zbiorem dopasowania akcji (Uruchom, Test, Profil) do kombinacji celów i konfiguracji kompilacji (debugowanie, wydanie, qa, prod itp.).
Steve Moser

3

Workspace( .xcworkspace) - jest pojemnikiem wielokrotnym projects. Został stworzony jako kolejny krok cross-project references[O]

  • Workspacezawiera wszystko schemesz dołączonegoprojects
  • Workspaceobsługuje wszystkie implicit dependencies[Informacje]

Obserwacje:

  • Bezpiecznie jest pracować z różnymi projektami w tym samym workspacei nie łapaćCouldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[O] pracy zworkspacegdzie tworzy Podsprojekt

Project( .xcodeproj) - To jest pojemnik na targetsi scheme. Definiuje pliki kodu, zasoby ...

Target- PBXNativeTargetsekcja. Definiuje określony zestaw ustawień kompilacji, które generują:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[Informacje] . Np. Służy do tworzeniaUniversal frameworklubUmbrella framework

Scheme- Project'skonfiguracja działania w Xcode: uruchamianie , testowanie , profilowanie , analiza i archiwizacja . Schemamożna udostępnić, co pomaga Ci w CI, Carthage... i zlokalizować:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targetsmoże mieć dependencies. Zależność jest linkiem źródłowym przeciwko. Zależności te można łączyć statycznie lub dynamicznie [Informacje] Istnieją dwa rodzaje:

  • Explicit Dependency[Informacje] - Kod źródłowy zależności, która znajduje się w tym samym projekcie lub projekcie zagnieżdżonym
  • Implicit Dependency[Informacje] - Kod źródłowy / zamknięty zależności znajdującej się w projekcie będącym częścią tego samego obszaru roboczego.

[Słownictwo]

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.