Powrót do strony głównej

Programowanie iOS na Windows bez Mac — GitHub Actions

Artykuł opisuje programowanie i publikację aplikacji iOS na Windows bez Mac z wykorzystaniem GitHub Actions, XcodeGen i Claude Code. Dwa przykłady w App Store: komunikator i kalkulator. Pełne instrukcje dotyczące certyfikatów i pipeline'u.

iOS bez Mac: od Windows do App Store w 15 min
Advertisement 728x90

Tworzenie aplikacji iOS na Windows z GitHub Actions i XcodeGen

Dwie aplikacje iOS — szyfrowany komunikator Dark Message i inżynierski kalkulator HVAC — zostały opublikowane w App Store. W pełni opracowane na Windows bez MacBooka. Proces: kod pisany lokalnie, budowanie i podpisywanie na wirtualnych macOS w GitHub Actions. Czas od push do repozytorium do budowy na iPhone — 15 minut.

To omija wymóg Xcode na macOS. GitHub zapewnia darmowe runnery z macOS, gdzie zainstalowany jest Xcode. Konfiguracja obejmuje Apple Developer Account, XcodeGen do generowania projektu z YAML, potok CI/CD i certyfikaty podpisywania.

Ścieżki rozwoju dla różnych poziomów

Wybór podejścia zależy od umiejętności:

Google AdInline article slot
  • Kodowanie z AI: Claude Code generuje kod SwiftUI na podstawie opisu. Działa w terminalu na Windows. Przykład promptu: «Aplikacja iOS w SwiftUI, szyfrowanie AES-256-GCM z PBKDF2, ekrany wprowadzania/odszyfrowywania».
  • Programista bez Maca: Własny kod Swift + AI konfiguruje infrastrukturę (XcodeGen, GitHub Actions, certyfikaty).
  • Hardkor: Ręczna struktura projektu, konfig YAML, potok. Iteracje przez TestFlight bez lokalnego podglądu.

Instalacja Claude Code:

npm install -g @anthropic-ai/claude-code
claude

AI tworzy pliki, poprawia na podstawie feedbacku. Podgląd nie jest dostępny, ale budowa w chmurze to rekompensuje.

Krok 1: Apple Developer Account z Polski

Utwórz Apple ID na appleid.apple.com (kraj ≠ Polska). Zarejestruj się w developer.apple.com/programs/enroll jako Individual. Płatność 99 USD/rok — kartą zagraniczną (Bybit lub odpowiednik). Dostęp do App Store Connect w ciągu 24–48 godzin.

Google AdInline article slot

Krok 2: Struktura projektu i XcodeGen

XcodeGen generuje .xcodeproj z project.yml bez Xcode. Przykład konfigu:

name: DarkMessage
options:
  bundleIdPrefix: com.darkmessage
  deploymentTarget:
    iOS: "15.0"
  xcodeVersion: "15.0"
targets:
  DarkMessage:
    type: application
    platform: iOS
    sources:
      - path: Sources
    resources:
      - path: Resources
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: com.darkmessage.ios
        MARKETING_VERSION: "1.0.0"
        CURRENT_PROJECT_VERSION: "1"
        SWIFT_VERSION: "5.9"
        TARGETED_DEVICE_FAMILY: "1,2"
        INFOPLIST_VALUES:
          UILaunchScreen: {}
    dependencies: []

Struktura repozytorium:

  • Sources/: App.swift, Views/, Models/, Services/ (CryptoService.swift).
  • Resources/Assets.xcassets/.
  • project.yml.
  • .github/workflows/build.yml.

Zalety YAML: kompaktowy (30 linii), brak konfliktów w Git, edytowalny w VS Code.

Google AdInline article slot

Krok 3: Repozytorium i GitHub Actions

Inicjalizacja:

git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/user/repo.git
git push -u origin main

Runnerzy Actions z macOS budują projekt: xcodegen generate, xcodebuild, podpisywanie, upload do TestFlight/App Store.

Krok 4: Podpisywanie kodu bez Maca

Wymagane:

  • Certyfikat dystrybucyjny (.p12).
  • Profil provisioning (.mobileprovision).
  • Klucz API App Store Connect.

Generowanie CSR na Windows z OpenSSL:

openssl genrsa -out ios_dist.key 2048
openssl req -new -key ios_dist.key -out ios_dist.csr -subj "/CN=Twoje Imię/[email protected]"

Prześlij CSR do developer.apple.com/account/resources/certificates → Apple Distribution → pobierz .cer. Konwertuj na .p12:

openssl x509 -inform der -in ios_dist.cer -inkey ios_dist.key -out ios_dist.p12

Profil provisioning: developer.apple.com → Profiles → + → App Store → bundle ID → certyfikat.

Klucz API: App Store Connect → Users and Access → Keys → + → App Manager.

Przechowuj sekrety w GitHub Settings → Secrets: CERTIFICATE_P12_BASE64, PROVISIONING_PROFILE_BASE64, APPSTORE_API_KEY.

Krok 5: Workflow YAML dla CI/CD

Przykład .github/workflows/build.yml (uproszczony):

name: Build iOS
on: [push]
jobs:
  build:
    runs-on: macos-13
    steps:
      - uses: actions/checkout@v4
      - name: Generate Xcode project
        uses: maxim-lobanov/setup-xcodegen@v1
        with:
          xcodegen-version: '2.35.0'
      - run: xcodegen generate
      - name: Import certificate
        env:
          CERTIFICATE_P12: ${{ secrets.CERTIFICATE_P12_BASE64 }}
        run: |
          echo $CERTIFICATE_P12 | base64 --decode > cert.p12
          security import cert.p12 -k ~/Library/Keychains/login.keychain
      # ... podpisywanie, archiwizacja, upload

Pełny workflow obejmuje xcodebuild archive, xcrun altool lub xcrun notarytool dla App Store.

Co jest ważne

  • GitHub Actions z macOS są darmowe dla publicznych repozytoriów (2000 min/miesiąc).
  • XcodeGen upraszcza zarządzanie projektem bez Xcode.
  • Podpisywanie kodu automatyzuje się przez base64-zakodowane sekrety.
  • Iteracje: 15 min od push do TestFlight.
  • Nadaje się do jednorazowych projektów; dla produkcji Mac przyspiesza rozwój.

— Editorial Team

Advertisement 728x90

Czytaj dalej