build: Die iOS-App laesst sich mit einem Befehl bauen, starten und testen
Bisher musste das Xcode-Projekt von Hand angelegt werden, und der Swift-Code wurde blind geschrieben, ohne ihn je zu uebersetzen. ios/project.yml beschreibt das Projekt jetzt in 50 Zeilen; xcodegen generate macht daraus Certain.xcodeproj. Das erzeugte Projekt liegt mit im Repository, damit man es ohne xcodegen einfach oeffnen kann - geaendert wird aber die project.yml. Festgelegt nach dem Muster von Vorrania: Buendelkennung com.scarriffle.certain, Team PP34X97WS3, iPhone und iPad, Entwicklungssprache Deutsch, iOS 26 als Mindestversion. Sprachfassung Swift 5, weil der Code nicht auf die strikte Nebenlaeufigkeitspruefung von Swift 6 hin geschrieben ist. Stufe 1 uebersetzt damit fehlerfrei, die 28 Tests laufen durch, und die App startet im Simulator bei der Serverabfrage. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# XcodeGen-Spezifikation - erzeugt das Xcode-Projekt aus diesen Quellen.
|
||||
# brew install xcodegen && cd ios && xcodegen generate && open Certain.xcodeproj
|
||||
# Die Datei ist die Wahrheit, nicht das erzeugte Certain.xcodeproj: wer einen
|
||||
# Ordner hinzufuegt, laeuft einmal "xcodegen generate" und ist fertig.
|
||||
name: Certain
|
||||
options:
|
||||
bundleIdPrefix: com.scarriffle
|
||||
# Ohne das baut Xcode eine englische App: Datumsauswahl und Monatsnamen
|
||||
# erscheinen dann als "10. Dec 2027" statt "10. Dez. 2027".
|
||||
developmentLanguage: de
|
||||
deploymentTarget:
|
||||
iOS: "26.0"
|
||||
createIntermediateGroups: true
|
||||
|
||||
targets:
|
||||
Certain:
|
||||
type: application
|
||||
platform: iOS
|
||||
sources:
|
||||
- path: Anmeldung
|
||||
- path: App
|
||||
- path: Bausteine
|
||||
- path: Einstellungen
|
||||
- path: Konten
|
||||
- path: Modelle
|
||||
- path: Netzwerk
|
||||
# Deutsch und Englisch, zeilengleich gehalten.
|
||||
- path: Texte
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffle.certain
|
||||
# Signing automatisch; wer mit einem anderen Apple-Konto baut, traegt
|
||||
# hier seine Team-ID ein (Xcode: Signing & Capabilities -> Team).
|
||||
CODE_SIGN_STYLE: Automatic
|
||||
DEVELOPMENT_TEAM: PP34X97WS3
|
||||
MARKETING_VERSION: "0.1"
|
||||
CURRENT_PROJECT_VERSION: "1"
|
||||
# iPhone und iPad, zweispaltig gedacht.
|
||||
TARGETED_DEVICE_FAMILY: "1,2"
|
||||
# Sprachfassung 5: der Code ist nicht auf die strikte
|
||||
# Nebenlaeufigkeitspruefung von Swift 6 hin geschrieben. Umstellen,
|
||||
# wenn die Uebergaenge AppZustand <-> CertainClient geprueft sind.
|
||||
SWIFT_VERSION: "5.0"
|
||||
# Keine eigene Info.plist pflegen - Xcode erzeugt sie aus diesen Werten.
|
||||
GENERATE_INFOPLIST_FILE: YES
|
||||
INFOPLIST_KEY_CFBundleDisplayName: Certain
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation: YES
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: YES
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations: "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"
|
||||
|
||||
CertainTests:
|
||||
type: bundle.unit-test
|
||||
platform: iOS
|
||||
sources:
|
||||
- path: Tests
|
||||
dependencies:
|
||||
- target: Certain
|
||||
settings:
|
||||
base:
|
||||
SWIFT_VERSION: "5.0"
|
||||
GENERATE_INFOPLIST_FILE: YES
|
||||
|
||||
schemes:
|
||||
Certain:
|
||||
build:
|
||||
targets:
|
||||
Certain: all
|
||||
run:
|
||||
config: Debug
|
||||
test:
|
||||
config: Debug
|
||||
targets:
|
||||
- CertainTests
|
||||
Reference in New Issue
Block a user