# Xcode-ის პროექტი {#existing-xcode-project}

::: code-group

```text [Agent prompt]
Help me get started with Tuist. Follow the setup at:
https://tuist.dev/en/docs/guides/get-started/existing-xcode-project
```

:::

აირჩიეთ ეს გზა, თუ გსურთ შეინარჩუნოთ `.xcodeproj` ან `.xcworkspace` უცვლელი და ჩართოთ Tuist-ის შესაძლებლობები პროექტის გენერაციის გარეშე. ქვემოთ მოცემული თითოეული განყოფილება იწყება იმით, რაც ამჟამად აკლია, შემდეგ კი გაჩვენებთ ფუნქციას, რომელიც ამ ხარვეზს აღმოფხვრის.

## წინაპირობები

- macOS **Xcode 26 ან უახლესი** (კომპილაციის ქეში და თანამედროვე ინსაიტები მასზეა დამოკიდებული).
- <.localized_link href="/guides/install-tuist">Tuist-ის ბრძანების სტრიქონის ინტერფეისი</.localized_link>.

## დააკავშირეთ პროექტი

გაუშვით `tuist init` რეპოზიტორიის ძირში. როდესაც Tuist აღმოაჩენს თქვენს სამუშაო სივრცეს, აირჩიეთ **`<YourApp>`-ის ინტეგრაცია**, შემდეგ გაიარეთ ავთენტიკაცია ბრაუზერში და აირჩიეთ ანგარიში, რომელსაც უნდა ეკუთვნოდეს პროექტი. Tuist წერს `Tuist.swift` ძირში, რომელიც ამაგრებს პროექტის სახელს, რათა თქვენმა გუნდის წევრებმა და CI-მ ერთი და იგივე კავშირი გამოიყენონ. შეიტანეთ ის კომიტში.

თუ ამას კოდირების აგენტის ან სკრიპტის მეშვეობით აკეთებთ, ჯერ გაუშვით `tuist auth login` (ბრაუზერის ნაკადი ელოდება Enter-ის დაჭერას), შემდეგ კი გამოიყენეთ არაინტერაქტიული ფორმა:

```bash
tuist init --build-system xcode --name <project-handle> --account <account>
```

ქვემოთ მოცემული ყველაფერი არასავალდებულო და დამოუკიდებელია.

## Xcode-ის კომპილაციის ქეში

Xcode 26 მოყვება ფაილების მიხედვით კომპილაციის ქეშით, მაგრამ მისი საცავი მდებარეობს მანქანის `DerivedData`-ში. სუფთა ბილდი ავსებს მას ლოკალურად; გუნდის წევრები და CI გამშვებები თავიდან აწყობენ, რადგან ვერ ხედავენ ამ საცავს.

`tuist setup cache` მიმართავს Xcode-ის კომპილაციის ქეშს Tuist-ის საერთო ქეშის ქსელისკენ. ნებისმიერ დეველოპერულ მანქანაზე ან CI გაშვებაზე ქეშის მოხვედრა სარგებელს მოუტანს ყველა სხვა მანქანას, რომელიც იმავე რევიზიას აწყობს.

```bash
tuist setup cache
```

ბრძანება ბეჭდავს ბილდის პარამეტრებს, რომლებიც Xcode-ს სჭირდება საერთო ქეშის გამოყენებისთვის. ის არ ცვლის თქვენს პროექტს, ამიტომ დაამატეთ ისინი თქვენი პროექტის ბილდის პარამეტრებში ან `.xcconfig` ფაილში, როგორც აღწერილია <.localized_link href="/guides/features/cache/xcode-cache#configure-xcode-build-settings">Xcode-ის ბილდის პარამეტრების კონფიგურაცია</.localized_link>-ში.

ააწყეთ Xcode-ში, შემდეგ კი ააწყეთ იგივე რევიზია მეორე მანქანაზე ან CI გამშვებზე. მეორე ბილდი დროის ნაწილში სრულდება და Xcode-ის ბილდის ანგარიში აჩვენებს კომპილაციის ქეშის მოხვედრებს.

## ბილდის ინსაიტები

Xcode იწერს თითოეული ტარგეტის ბილდის ხანგრძლივობას ლოგში და ბილდის ანგარიშში. არცერთი არ არის აგრეგირებული გაშვებების ან მანქანების მიხედვით. ბილდის დროის რეგრესია, რომელიც ერთ PR-ში ხვდება, ჩვეულებრივ მხოლოდ როგორც ნელი CI ჩანს, ყოველგვარი აშკარა სიგნალის გარეშე იმის შესახებ, თუ რომელმა ტარგეტმა გამოიწვია ის ან როდის.

ბილდის ინსაიტები იწერს ყოველი ბილდის ხანგრძლივობას და ფაზების დროს, რათა ტენდენცია ხილული იყოს დაშბორდზე. ეს არის ერთხაზიანი post-action თქვენს სქემაზე:

1. Xcode-ში: **Product → Scheme → Edit Scheme…**
2. გაშალეთ **Build → Post-actions**, დააჭირეთ **+**, აირჩიეთ **New Run Script Action**.
3. **Provide build settings from**-ის ქვეშ, აირჩიეთ თქვენი აპის ტარგეტი.
4. ჩასვით ხაზი, რომელიც შეესაბამება Tuist-ის ინსტალაციის მეთოდს: ::: code-group
   ```bash [Mise]
   $HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect build
   ```
   ```bash [Homebrew]
   tuist inspect build
   ```
   <!-- -->
   :::

   Xcode-ის სქემის სკრიპტები არ იღებენ თქვენი შელის `PATH`-ს, ამიტომ mise-ის shim თავისთავად არ იძებნება. ზემოთ მოცემული Mise-ის ხაზი იძახებს mise-ს აბსოლუტური გზით და სთხოვს კონფიგურაციის ჩატვირთვას `$SRCROOT`-დან, რათა აირჩიოს თქვენს პროექტში მიმაგრებული ვერსია.
5. ააწყეთ ერთხელ. ბილდი რამდენიმე წამში გამოჩნდება დაშბორდის **Builds** ჩანართზე.

## ტესტების ინსაიტები

Xcode-ის ტესტის ლოგი ჩამოთვლის თითოეული ტესტის შედეგებს ერთი გაშვებით. ის არ აგრეგირებს გაშვებებს შორის სიგნალს, რომელიც რეალურად გჭირდებათ: რამდენად ხშირად მარცხდება ტესტი, რამდენად შენელდა ის გასულ კვირას, მარცხდება თუ არა მხოლოდ გარკვეულ სიმულატორებზე. ტესტი, რომელიც ათი CI გაშვების განმავლობაში სანდოდან არასტაბილურად გადადის, იგივედ ჩანს, როგორც ერთი არაიღბლიანი გაშვება.

ტესტების ინსაიტები იწერს ყოველი ტესტის შედეგს და ხანგრძლივობას და აკორელირებს შედეგებს გაშვებებს შორის. ნელი ტესტები, მარცხები და არასტაბილურობა ჩანს დაშბორდის **Tests** ჩანართზე.

1. **Product → Scheme → Edit Scheme…**
2. **Test → Post-actions → +** → **New Run Script Action**.
3. **Provide build settings from** თქვენი აპის ტარგეტი.
4. ჩასვით: ::: code-group
   ```bash [Mise]
   $HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
   ```
   ```bash [Homebrew]
   tuist inspect test
   ```
   <!-- -->
   :::
5. გაუშვით ტესტის მოქმედება ერთხელ. შედეგები გამოჩნდება დაშბორდის **Tests** ჩანართზე.

## ბანდლის ინსაიტები

IPA-ს ინსტალაციისა და ჩამოტვირთვის ზომა იცვლება ყოველი დამატებული ასეტისა და დაკავშირებული სიმბოლოსთან ერთად. Xcode აჩვენებს ზომებს მოთხოვნით **Product → Show Archive**-ში, არა როგორც სერიას. PR, რომელიც დიდ ასეტს ამატებს, განურჩეველია ნებისმიერი სხვა PR-ისგან შერწყმის რიგში.

ბანდლის ინსაიტები იწერს ინსტალაციისა და ჩამოტვირთვის ზომებს ყოველი ანალიზირებული ბილდისთვის და შეუძლია ჩააგდოს PR-ის შემოწმება, როდესაც ბრენჩის ზღვარი გადაიჭრება. დაამატეთ ეს თქვენს CI-ში ბილდის ნაბიჯის შემდეგ:

```bash
tuist inspect bundle App.ipa
```

გახსენით **Bundle insights** დაშბორდზე ტენდენციის სანახავად და ზღვრების კონფიგურაციისთვის.

## პრივიუები

TestFlight ყოველ გაზიარებაზე ამატებს ბილდისა და გადახედვის ციკლს. ხელმოწერილი `.ipa`-ის პირდაპირ გაგზავნა მოითხოვს მიმღების UDID-ს პროვიზინგის პროფილში. არცერთი არ არის მოსახერხებელი დიზაინერის ან QA-სთვის, ვისაც უბრალოდ სურს მიმდინარე ბრენჩის გამოცდა.

პრივიუები ბილდს აქცევს გაზიარებად ბმულად, რომელიც ერთი ბრძანებით გაეშვება სიმულატორზე ან მოწყობილობაზე:

```bash
tuist xcodebuild build -scheme App -workspace App.xcworkspace -configuration Debug -sdk iphonesimulator
tuist share App
```

გაუგზავნეთ ბმული. მიმღებები გაუშვებენ მას `tuist run <url>`-ით ან Tuist macOS აპით.

## გუნდის ჩართვა

ქეში და ინსაიტები უფრო ეფექტური ხდება პროექტთან დაკავშირებული ადამიანების რაოდენობის ზრდასთან ერთად. მიიწვიეთ თქვენი გუნდის წევრები ორგანიზაციაში დაშბორდის ანგარიშის პარამეტრებიდან და დააყენეთ <.localized_link href="/guides/integrations/authentication/sso">Single Sign-On</.localized_link> (Google, Okta, Microsoft), რათა ახალი მომხმარებლების დამატება იყოს ერთი დაწკაპუნება და არა თითოეული ადამიანისთვის `tuist auth login`.

## რა არის შემდეგი ნაბიჯი

თუ ამ მიდგომას გადაიზრდებით, უდიდესი ნაბიჯი იქნება Tuist-ით გენერირებული პროექტები. ეს ნამდვილი ცვლილებაა (მიზნები აღწერილია Swift მანიფესტებში `.xcodeproj`-ის ნაცვლად), მაგრამ სწორედ ეს ხსნის მოდულის ქეშს და შერჩევით ტესტირებას. სრულად განხილულია <.localized_link href="/guides/get-started/generated-xcode-project">Generated Xcode project</.localized_link> სახელმძღვანელოში.
