File | Owner | Purpose |
|---|---|---|
fission.toml | Fission | Declares the native module, which Xcode project to build, which schemes are tests, which products must be embedded, and how they are signed. |
platforms/macos/native/project.yml | XcodeGen | Generates the .xcodeproj, target graph, sources, build settings, dependencies, Info.plist paths, and entitlements references. |
platforms/macos/native/SecurityExtensions.xcodeproj | Generated | Consumed by xcodebuild. Usually regenerated rather than edited by hand. |
platforms/macos/native/*/*.entitlements | Apple signing | Entitlements used by native targets. Fission can pass package/run entitlements when signing the built products. |
[[native.modules]]
name = "security-extensions"
path = "platforms/macos/native"
[native.modules.macos]
xcodegen_spec = "platforms/macos/native/project.yml"
xcode_project = "platforms/macos/native/SecurityExtensions.xcodeproj"
derived_data = ".fission/native/macos/security-extensions/DerivedData"
test_schemes = ["SecurityExtensionsTests"]
[[native.modules.macos.products]]
scheme = "FileProvider"
bundle = "FileProvider.appex"
kind = "app-extension"
entitlements = "platforms/macos/native/FileProvider/FileProvider.entitlements"
provisioning_profile = "profiles/macos/FileProvider.provisionprofile"
signing_identity = "Developer ID Application: Acme Software Ltd (ABCDE12345)"
Field | Meaning |
|---|---|
xcodegen_spec | Project-relative XcodeGen YAML file. If set, Fission regenerates the project before using it. |
xcode_project | Project-relative .xcodeproj path passed to xcodebuild. |
derived_data | Optional build output root. Use it when you want deterministic CI cache paths or easier diagnostics. |
test_schemes | Schemes run by fission test --target macos with code signing disabled. |
products.scheme | Xcode scheme built for packaging and local run. It should produce the named bundle. |
products.bundle | Output bundle file name, such as FileProvider.appex or NetworkFilter.systemextension. |
products.kind | Selects the embed location: app-extension goes to Contents/PlugIns; system-extension goes to Contents/Library/SystemExtensions. |
name: SecurityExtensions
options:
bundleIdPrefix: com.acme.notes
deploymentTarget:
macOS: "13.0"
settings:
base:
MACOSX_DEPLOYMENT_TARGET: "13.0"
SWIFT_VERSION: "5.0"
CODE_SIGN_STYLE: Manual
DEVELOPMENT_TEAM: ABCDE12345
targets:
FileProvider:
type: app-extension
platform: macOS
deploymentTarget: "13.0"
sources:
- path: FileProvider
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.acme.notes.fileprovider
INFOPLIST_FILE: FileProvider/Info.plist
CODE_SIGN_ENTITLEMENTS: FileProvider/FileProvider.entitlements
PRODUCT_NAME: FileProvider
dependencies:
- sdk: FileProvider.framework
SecurityExtensionsTests:
type: unit-test
platform: macOS
deploymentTarget: "13.0"
sources:
- path: SecurityExtensionsTests
dependencies:
- target: FileProvider
platforms/macos/native/
project.yml
FileProvider/
FileProvider.swift
Info.plist
FileProvider.entitlements
SecurityExtensionsTests/
FileProviderTests.swift
fission test --project-dir . --target macos
fission readiness package --project-dir . --target macos --format app
Failure | Fix |
|---|---|
xcodegen missing | Install XcodeGen and rerun readiness. |
Scheme not found | Make sure project.yml defines the target/scheme and the generated .xcodeproj is current. |
Bundle name mismatch | Align products.bundle with the built .appex or .systemextension file name. |
Provisioning profile without identity | Configure a real signing identity; profile-backed entitlements cannot be ad-hoc signed. |
Wrong embed location | Use kind = "app-extension" for .appex and kind = "system-extension" for .systemextension. |