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:
- 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.
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.
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
Brak komentarzy.