# XcodeGen spec for the iOS client. The .xcodeproj and Info.plist are generated # from this by scripts/build-ios.sh and are not committed. name: ProtonStream options: bundleIdPrefix: io.narl deploymentTarget: iOS: "17.0" packages: MPVKit: url: https://github.com/mpvkit/MPVKit exactVersion: 1.0.0 targets: ProtonStream: type: application platform: iOS sources: - path: ProtonStream excludes: # The icon's source; the asset catalog holds what it renders to. - Resources/AppIcon.svg - Resources/THIRD_PARTY_NOTICES.md - path: ProtonStream/Resources/THIRD_PARTY_NOTICES.md buildPhase: resources # UniFFI output, written by `scripts/build-ios.sh bindings`. - path: build/generated/PstrBridge.swift # Shared with the Android client rather than copied: Inter, and the # licence texts the About page shows. - path: ../android/app/src/main/res/font/inter_regular.ttf buildPhase: resources - path: ../android/app/src/main/res/font/inter_semibold.ttf buildPhase: resources - path: ../android/app/src/main/assets/licenses/GPL-3.0.txt buildPhase: resources - path: ../android/app/src/main/assets/licenses/Inter-OFL.txt buildPhase: resources dependencies: # The GPL build is the one with libass and every demuxer; the app is # sideloaded, never distributed through the App Store. - package: MPVKit product: MPVKit-GPL - sdk: Security.framework - sdk: SystemConfiguration.framework scheme: testTargets: - ProtonStreamTests settings: base: PRODUCT_BUNDLE_IDENTIFIER: io.narl.protonstream MARKETING_VERSION: ${PSTR_VERSION} CURRENT_PROJECT_VERSION: ${PSTR_BUILD} SWIFT_VERSION: "5.0" TARGETED_DEVICE_FAMILY: "1,2" ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon SWIFT_OBJC_BRIDGING_HEADER: ProtonStream/Bridge/ProtonStream-Bridging-Header.h HEADER_SEARCH_PATHS: $(PROJECT_DIR)/build/generated "LIBRARY_SEARCH_PATHS[sdk=iphoneos*]": $(PROJECT_DIR)/../target/aarch64-apple-ios/release "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]": $(PROJECT_DIR)/../target/aarch64-apple-ios-sim/release OTHER_LDFLAGS: -lpstr_android info: path: ProtonStream/Info.plist properties: CFBundleDisplayName: Proton Stream LSRequiresIPhoneOS: true ITSAppUsesNonExemptEncryption: false UIBackgroundModes: [audio] # The Proton palette's page colour, so a dark app does not open on white. UILaunchScreen: UIColorName: LaunchBackground UIRequiresFullScreen: false UIAppFonts: - inter_regular.ttf - inter_semibold.ttf # A share link handed over from elsewhere: protonstream://add?url=…, # or the link with its scheme swapped (IncomingShareLink.swift). CFBundleURLTypes: - CFBundleURLName: io.narl.protonstream.share-link CFBundleURLSchemes: [protonstream] UISupportedInterfaceOrientations: - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad: - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight # The pure logic the Android unit tests pin, pinned again here: hosted in the # app, so `@testable import` reaches it, on the simulator. ProtonStreamTests: type: bundle.unit-test platform: iOS sources: - path: ProtonStreamTests dependencies: - target: ProtonStream settings: base: SWIFT_VERSION: "5.0" GENERATE_INFOPLIST_FILE: YES # `@testable import ProtonStream` pulls in the app's bridging header, # which includes the generated FFI header. HEADER_SEARCH_PATHS: $(PROJECT_DIR)/build/generated