Doug b01070c6b6
Project updates. (#3837)
* Don't use the AppIdentifierPrefix as it breaks when re-signing.

* Generate entitlements using XcodeGen.

* Ignore Xcode Archives.

* Remove the (unused) NCE.

* Update submodule.
2025-02-26 18:29:20 +00:00

247 lines
7.9 KiB
YAML

name: ElementX
schemes:
ElementX:
analyze:
config: Debug
archive:
config: Release
build:
targets:
ElementX:
- running
- testing
- profiling
- analyzing
- archiving
profile:
config: Release
run:
config: Debug
environmentVariables:
- variable: HTTPS_PROXY
value: localhost:9090
isEnabled: false
- variable: UI_TESTS_SCREEN
value: ""
isEnabled: false
- variable: RESET_APP_SETTINGS
value: "true"
isEnabled: false
test:
config: Debug
gatherCoverageData: true
coverageTargets:
- ElementX
testPlans:
- path: ../../UnitTests/SupportingFiles/UnitTests.xctestplan
defaultPlan: true
targets:
ElementX:
type: application
platform: iOS
info:
path: Info.plist
properties:
UILaunchScreen:
UIColorName: colors/background-color
CFBundleDisplayName: $(APP_DISPLAY_NAME)
CFBundleShortVersionString: $(MARKETING_VERSION)
CFBundleVersion: $(CURRENT_PROJECT_VERSION)
CFBundleURLTypes: [
{
CFBundleTypeRole: Editor,
CFBundleURLName: "Element Call",
CFBundleURLSchemes: [
io.element.call
]
},
{
CFBundleTypeRole: Editor,
CFBundleURLName: "Application",
CFBundleURLSchemes: [
$(BASE_BUNDLE_IDENTIFIER)
]
}
]
UISupportedInterfaceOrientations: [
UIInterfaceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight
]
appGroupIdentifier: $(APP_GROUP_IDENTIFIER)
baseBundleIdentifier: $(BASE_BUNDLE_IDENTIFIER)
keychainAccessGroupIdentifier: $(KEYCHAIN_ACCESS_GROUP_IDENTIFIER)
productionAppName: $(PRODUCTION_APP_NAME)
ITSAppUsesNonExemptEncryption: false
NSUserActivityTypes: [
INSendMessageIntent,
INStartCallIntent,
]
NSCameraUsageDescription: To take pictures or videos and send them as a message $(APP_DISPLAY_NAME) needs access to the camera.
NSMicrophoneUsageDescription: To record and send messages with audio, $(APP_DISPLAY_NAME) needs to access the microphone.
NSPhotoLibraryAddUsageDescription: This lets you save images and videos to your photo library.
NSLocationWhenInUseUsageDescription: Grant location access so that $(APP_DISPLAY_NAME) can share your location.
NSFaceIDUsageDescription: Face ID is used to access your app.
UIBackgroundModes: [
audio,
fetch,
processing,
voip
]
BGTaskSchedulerPermittedIdentifiers: [
io.element.elementx.background.refresh
]
UTExportedTypeDeclarations:
- UTTypeConformsTo: [public.text]
UTTypeDescription: Mention Pills
UTTypeIdentifier: $(PILLS_UT_TYPE_IDENTIFIER)
CFBundleDocumentTypes:
- CFBundleTypeName: Mention Pills
CFBundleTypeRole: Viewer
LSHandlerRank: Owner
LSItemContentTypes: $(PILLS_UT_TYPE_IDENTIFIER)
LSSupportsOpeningDocumentsInPlace: false
entitlements:
path: ElementX.entitlements
properties:
aps-environment: development
com.apple.developer.associated-domains:
- applinks:element.io
- applinks:app.element.io
- applinks:staging.element.io
- applinks:develop.element.io
- applinks:mobile.element.io
- applinks:call.element.io
- applinks:call.element.dev
- applinks:matrix.to
- webcredentials:*.element.io
com.apple.developer.usernotifications.communication: true
com.apple.security.app-sandbox: true
com.apple.security.application-groups:
- $(APP_GROUP_IDENTIFIER)
com.apple.security.network.client: true
keychain-access-groups:
- $(KEYCHAIN_ACCESS_GROUP_IDENTIFIER)
settings:
base:
PRODUCT_NAME: $(APP_NAME)
PRODUCT_BUNDLE_IDENTIFIER: $(BASE_BUNDLE_IDENTIFIER)
MARKETING_VERSION: $(MARKETING_VERSION)
CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
DEVELOPMENT_TEAM: $(DEVELOPMENT_TEAM)
SWIFT_OBJC_BRIDGING_HEADER: ElementX/SupportingFiles/ElementX-Bridging-Header.h
SWIFT_OBJC_INTERFACE_HEADER_NAME: GeneratedInterface-Swift.h
PILLS_UT_TYPE_IDENTIFIER: $(BASE_BUNDLE_IDENTIFIER).pills
DEVELOPMENT_ASSET_PATHS: DevelopmentAssets/Media
OTHER_SWIFT_FLAGS:
- "-DIS_MAIN_APP"
preBuildScripts:
- name: 🛠 SwiftGen
runOnlyWhenInstalling: false
basedOnDependencyAnalysis: false
shell: /bin/sh
script: |
export PATH="$PATH:/opt/homebrew/bin"
if which swiftgen >/dev/null; then
swiftgen config run --config Tools/SwiftGen/swiftgen-config.yml
else
echo "warning: SwiftGen not installed, download from https://github.com/SwiftGen/SwiftGen"
fi
- name: 🧙 Sourcery - Generate mocks
runOnlyWhenInstalling: false
basedOnDependencyAnalysis: false
shell: /bin/sh
script: |
export PATH="$PATH:/opt/homebrew/bin"
if which sourcery >/dev/null; then
sourcery --config Tools/Sourcery/AutoMockableConfig.yml
else
echo "warning: Sourcery not installed, run swift run tools setup-project"
fi
- name: 🧙 Sourcery - Generate preview tests
runOnlyWhenInstalling: false
basedOnDependencyAnalysis: false
shell: /bin/sh
script: |
export PATH="$PATH:/opt/homebrew/bin"
if which sourcery >/dev/null; then
sourcery --config Tools/Sourcery/PreviewTestsConfig.yml
else
echo "warning: Sourcery not installed, run swift run tools setup-project"
fi
postBuildScripts:
- name: ⚠️ SwiftLint
runOnlyWhenInstalling: false
basedOnDependencyAnalysis: false
shell: /bin/sh
script: |
export PATH="$PATH:/opt/homebrew/bin"
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
- name: 🧹 SwiftFormat
runOnlyWhenInstalling: false
basedOnDependencyAnalysis: false
shell: /bin/sh
script: |
export PATH="$PATH:/opt/homebrew/bin"
if which swiftformat >/dev/null; then
swiftformat --lint --lenient "$PROJECT_DIR"
else
echo "warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat"
fi
dependencies:
- target: NSE
- target: ShareExtension
- package: MatrixRustSDK
embed: true
- package: Compound
- package: Algorithms
- package: AnalyticsEvents
- package: Collections
- package: DeviceKit
- package: DTCoreText
- package: KeychainAccess
- package: Kingfisher
- package: KZFileWatchers
- package: LoremSwiftum
- package: LRUCache
- package: Mapbox
- package: PostHog
- package: SwiftState
- package: GZIP
- package: Sentry
products:
- Sentry
- SentrySwiftUI
- package: Version
- package: Emojibase
- package: WysiwygComposer
- package: SwiftOGG
- package: DSWaveformImage
product: DSWaveformImageViews
sources:
- path: ../Sources
excludes:
- Other/Extensions/XCTestCase.swift
- Other/Extensions/XCUIElement.swift
- path: ../../Secrets/Secrets.swift
- path: ../Resources
- path: ../SupportingFiles
- path: ../../Tools/Scripts/Templates/SimpleScreenExample/ElementX
- path: ../../DevelopmentAssets/Media