Vývoj iOS aplikací na Windows s GitHub Actions a XcodeGen
Dvě iOS aplikace – šifrovaný messenger Dark Message a inženýrská kalkulačka HVAC – byly publikovány v App Store. Plně vyvinuty na Windows bez MacBooku. Proces: kód se píše lokálně, sestavení a podepisování na virtuálních macOS v GitHub Actions. Čas od push do repozitáře po sestavení na iPhone – 15 minut.
Tím se obchází požadavek Xcode na macOS. GitHub poskytuje bezplatné runnery s macOS, kde je nainstalován Xcode. Nastavení zahrnuje Apple Developer Account, XcodeGen pro generování projektu z YAML, CI/CD pipeline a podpisové certifikáty.
Cesty vývoje pro různé úrovně
Výběr přístupu závisí na dovednostech:
- Vibe coding s AI: Claude Code generuje SwiftUI kód podle popisu. Funguje v terminálu na Windows. Příklad promptu: „iOS aplikace na SwiftUI, šifrování AES-256-GCM s PBKDF2, obrazovky pro vstup/dešifrování“.
- Programátor bez Macu: Vlastní Swift kód + AI nastavuje infrastrukturu (XcodeGen, GitHub Actions, certifikáty).
- Hardcore: Ruční struktura projektu, YAML konfigurace, pipeline. Iterace přes TestFlight bez lokálního náhledu.
Instalace Claude Code:
npm install -g @anthropic-ai/claude-code
claude
AI vytváří soubory, upravuje podle zpětné vazby. Náhled chybí, ale sestavení v cloudu to kompenzuje.
Krok 1: Apple Developer Account z Česka
Vytvořte Apple ID na appleid.apple.com (země ≠ Rusko). Zaregistrujte se na developer.apple.com/programs/enroll jako Individual. Platba $99/rok – zahraniční kartou (např. Revolut nebo ekvivalent). Přístup k App Store Connect do 24–48 hodin.
Krok 2: Struktura projektu a XcodeGen
XcodeGen generuje .xcodeproj z project.yml bez Xcode. Příklad konfigurace:
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 repozitáře:
Sources/: App.swift, Views/, Models/, Services/ (CryptoService.swift).Resources/Assets.xcassets/.project.yml..github/workflows/build.yml.
Výhody YAML: kompaktní (30 řádků), žádné konflikty v Git, editovatelné v VS Code.
Krok 3: Repozitář a GitHub Actions
Inicializace:
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/user/repo.git
git push -u origin main
Actions-runner s macOS sestavují projekt: xcodegen generate, xcodebuild, podpis, upload do TestFlight/App Store.
Krok 4: Podepisování kódu bez Macu
Potřeba:
- Distribution Certificate (.p12).
- Provisioning Profile (.mobileprovision).
- App Store Connect API Key.
Generování CSR na Windows s OpenSSL:
openssl genrsa -out ios_dist.key 2048
openssl req -new -key ios_dist.key -out ios_dist.csr -subj "/CN=Vaše jméno/[email protected]"
Nahrajte CSR na developer.apple.com/account/resources/certificates → Apple Distribution → stáhněte .cer. Převod na .p12:
openssl x509 -inform der -in ios_dist.cer -inkey ios_dist.key -out ios_dist.p12
Provisioning Profile: developer.apple.com → Profiles → + → App Store → bundle ID → certifikát.
API Key: App Store Connect → Users and Access → Keys → + → App Manager.
Uchovávejte tajemství v GitHub Settings → Secrets: CERTIFICATE_P12_BASE64, PROVISIONING_PROFILE_BASE64, APPSTORE_API_KEY.
Krok 5: Workflow YAML pro CI/CD
Příklad .github/workflows/build.yml (zjednodušený):
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
# ... podpis, archiv, upload
Úplný workflow zahrnuje xcodebuild archive, xcrun altool nebo xcrun notarytool pro App Store.
Co je důležité
- GitHub Actions s macOS jsou zdarma pro public repo (2000 min/měsíc).
- XcodeGen zjednodušuje správu projektu bez Xcode.
- Podepisování kódu se automatizuje přes base64 zakódovaná tajemství.
- Iterace: 15 minut od push do TestFlight.
- Vhodné pro jednorázové projekty; pro produkci Mac urychluje vývoj.
— Editorial Team
Zatím žádné komentáře.