Publishing

Build and Release

Build and Release

Ruflet builds the managed Flutter client for Android, iOS, web, macOS, Windows, and Linux.

Build targets

ruflet build apk
ruflet build aab
ruflet build ios
ruflet build ipa
ruflet build web
ruflet build macos
ruflet build windows
ruflet build linux

android is an alias for an Android APK build. ipa produces the iOS archive you upload to App Store Connect, where ios produces an app for a device.

Naming the app

The identity every build uses comes from ruflet.yaml:

app:
  name: My App
  package_name: my_app
  organization: com.example
  version: 1.0.0+1
  description: A new Ruflet app.

From these Ruflet derives the display name, the bundle identifier (com.example.my_app), and the version and build number written into each platform. A mobile build stops if the name, package name, or organization is missing.

Server-driven builds

Server-driven is the default build mode. The installed client connects to a deployed Ruby or Rails server, so configure a reachable HTTPS URL:

app:
  backend_url: https://app.example.com

Do not use localhost in a build intended for another device.

backend_url may be omitted for web and desktop clients, which learn their server at launch: a web client from the origin it is served from, a desktop client from the URL its launcher passes.

Self-contained builds

Use --self to package the Ruby project with the client:

ruflet build android --self
ruflet build ios --self

Choose this mode when the app should run without a remote Ruflet server.

Extensions and permissions

Optional client packages belong in ruflet.yaml:

extensions:
  - charts
  - map
  - webview

Protected device access belongs in services.yaml:

services:
  - camera:
      description: Allows users to capture photos.

Rebuild after changing either file.

Assets

assets:
  dir: assets
  splash_screen: assets/splash.png
  icon_launcher: assets/icon.png

build:
  splash_color: "#FFFFFF"
  splash_dark_color: "#0B0B0B"
  icon_background: "#FFFFFF"
  theme_color: "#FFFFFF"

Install a build

ruflet install
ruflet install --device DEVICE_ID

Run the intended platform build early. Native signing, permissions, and store requirements are platform-specific and should not be left until release day.