⌂
›
Publishing
›
Build and Release
Build and Release
Ruflet already supports packaging for the major targets you would expect from a Flutter-backed app stack.
Build targets
Current CLI targets include:
apkandroidiosaabwebmacoswindowslinux
Example commands:
-function">ruflet build apk
-function">ruflet build ios
-function">ruflet build web
-function">ruflet build macosTwo build modes
Server-driven mode
This is the default. Your packaged app expects a backend URL:
app:
backend_url: TOKPLACEHOLDER0TOKENUse this mode when:
- the app should talk to a hosted Ruflet backend
- you want a thinner client package
- your release model already includes a deployed server
Self-contained mode
Use --self to build against the embedded runtime/client entrypoint:
-function">ruflet build android --self
-function">ruflet build ios --selfUse this mode when:
- you want more standalone packaging
- the app logic should travel with the client build
- you are closer to an installed-app workflow than a hosted runtime
Assets and branding
ruflet.yaml also drives build-time assets:
assets:
dir: assets
splash_screen: assets/splash.png
icon_launcher: assets/icon.png
build:
splash_color: TOKPLACEHOLDER0TOKEN
splash_dark_color: TOKPLACEHOLDER1TOKEN
icon_background: TOKPLACEHOLDER2TOKEN
theme_color: TOKPLACEHOLDER3TOKENInstalling builds
After building, use:
-function">ruflet installThis helps move exported outputs into the client workspace and asks Flutter to install the app on a chosen device.
Prebuilt client updates
Ruflet also has a client update flow:
-function">ruflet update all
-function">ruflet update web --checkThis is useful when you rely on cached prebuilt clients for development.
Shipping advice
- Decide early whether your app is server-driven or self-contained.
- If you need media, camera, storage, or other extensions, declare them up front in
ruflet.yaml. - Test the real build target early, especially on iOS and Android, because native permissions and packaging details matter.