Need | Native module fit | Reason |
|---|---|---|
macOS app extension or system extension | Yes | The product must be embedded in a specific bundle location and signed with the app. |
Windows helper DLL, service runtime, or driver package | Yes | The package needs explicit runtime files or installer-only driver inputs. |
Linux helper executable or privileged helper | Yes | The package needs predictable staging and an audit trail for installer policy. |
Android Gradle dependency, source directory, or manifest entry | Yes | The generated Android host needs the native dependency in its platform build. |
iOS Swift package, linked framework, or native source directory | Yes | The generated iOS host needs native package/source/linkage metadata. |
Normal Fission UI logic | No | Keep it in shared Rust app code. |
A shell command that only uploads the final artifact | No | Use fission distribute, fission publish, or a release workflow. |
[[native.modules]]
name = "device-protection"
path = "platforms/native/device-protection"
[native.modules.macos]
xcode_project = "platforms/native/device-protection/DeviceProtection.xcodeproj"
[native.modules.windows]
msbuild_project = "platforms/native/device-protection/DeviceProtection.sln"
platform = "x64"
[native.modules.linux]
cargo_package = "device-protection-helper"
[[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"
test_schemes = ["SecurityExtensionsTests"]
[[native.modules.macos.products]]
scheme = "FileProvider"
bundle = "FileProvider.appex"
kind = "app-extension"
entitlements = "platforms/macos/native/FileProvider.entitlements"
provisioning_profile = "profiles/FileProvider.provisionprofile"
[native.modules.macos.products.run]
provisioning_profile = "profiles/FileProviderDevelopment.provisionprofile"
signing_identity = "Apple Development"
Product kind | Bundle requirement | Embedded into |
|---|---|---|
app-extension | *.appex | Contents/PlugIns |
system-extension | *.systemextension | Contents/Library/SystemExtensions |
[[native.modules]]
name = "linux-file-helper"
path = "platforms/linux/native"
[native.modules.linux]
cargo_manifest_path = "platforms/linux/native/Cargo.toml"
cargo_package = "linux-file-helper"
features = ["fuse"]
no_default_features = true
[[native.modules.linux.products]]
name = "file-helper"
path = "target/{profile}/linux-file-helper"
kind = "runtime"
destination = "libexec/linux-file-helper"
[[native.modules.linux.products]]
name = "mount-helper"
path = "target/{profile}/mount-helper"
kind = "privileged-helper"
destination = "libexec/mount-helper"
Product kind | What Fission does | What Fission does not do |
|---|---|---|
runtime | Stages the file or directory into the run/package root. | It does not install system services or grant privileges. |
privileged-helper | Stages and records the helper in the native-products manifest. | It does not add setuid bits, capabilities, polkit rules, or elevation policy. |
[[native.modules]]
name = "windows-helper"
path = "platforms/windows/helper"
[native.modules.windows]
cargo_manifest_path = "platforms/windows/helper/Cargo.toml"
cargo_package = "windows-helper"
features = ["installer"]
no_default_features = true
[[native.modules.windows.products]]
name = "helper"
path = "target/{profile}/windows-helper.exe"
kind = "runtime"
destination = "native/windows-helper.exe"
[[native.modules]]
name = "windows-protection"
path = "platforms/windows/native"
[native.modules.windows]
nuget_packages_config = "platforms/windows/native/packages.config"
nuget_packages_directory = "platforms/windows/native/packages"
msbuild_project = "platforms/windows/native/Protection.sln"
platform = "x64"
build_target = "Build"
test_binaries = ["platforms/windows/native/{platform}/{configuration}/ProtectionTests.exe"]
[[native.modules.windows.products]]
name = "cloud-files-provider"
path = "platforms/windows/native/{platform}/{configuration}/Provider.dll"
kind = "runtime"
destination = "native/Provider.dll"
[[native.modules.windows.products]]
name = "filesystem-minifilter"
path = "platforms/windows/native/{platform}/{configuration}/DriverPackage"
kind = "driver-package"
Product kind | Package behavior |
|---|---|
runtime | Staged beside the app for local runs and package outputs. |
driver-package | Written to the native-products manifest for installer scripts; excluded from MSIX app manifests. |
[[native.modules]]
name = "scanner-sdk"
[native.modules.android]
repositories = ["https://maven.example.com/releases"]
gradle_dependencies = ["com.example:scanner:1.2.3"]
source_dirs = ["platforms/android/scanner/src/main/java"]
permissions = ["android.permission.CAMERA"]
manifest_application_entries = ["<meta-data android:name=\"scanner\" android:value=\"enabled\" />"]
[native.modules.ios]
source_dirs = ["platforms/ios/Scanner"]
linked_frameworks = ["AVFoundation.framework"]
[[native.modules.ios.swift_packages]]
url = "https://github.com/example/scanner-ios"
product = "ScannerSDK"
from = "1.2.3"
Command | Native module behavior |
|---|---|
fission build --target <target> | Builds native modules for the selected target before the host build needs their products. |
fission run --target <target> | Builds and stages runtime native products into the local run root. macOS also embeds/signs native products in the development .app. |
fission test --target <target> | Runs native module tests where configured: Xcode schemes, Linux Cargo tests, Windows Cargo tests, or VSTest binaries. |
fission package --target <target> --format <format> | Builds/stages package products and writes native-products manifests where installers need structured input. |
fission readiness package ... | Checks missing scripts, package paths, signing references, and target/format-specific native requirements that can be known before packaging. |
[package.linux.run]
installer_script = "platforms/linux/package-run.sh"
Environment variable | Meaning |
|---|---|
FISSION_LINUX_PAYLOAD_DIR | Directory containing the app binary, assets, and staged native products. |
LINUX_BINARY | Path to the app binary inside the payload. |
FISSION_LINUX_NATIVE_PRODUCTS_MANIFEST | JSON manifest describing staged Linux native products. |
LINUX_PROFILE | release when the package command runs with --release. |
[package.windows]
exe_installer_script = "platforms/windows/package-exe.ps1"
Environment variable | Meaning |
|---|---|
WINDOWS_BINARY | Path to the built app executable. |
FISSION_WINDOWS_NATIVE_PRODUCTS_MANIFEST | JSON manifest describing Windows native products. |
WINDOWS_PROFILE | release when the package command runs with --release. |