Build & release
Producing installable artifacts for the Schuly app. All commands are package.json scripts run via bun - see Development setup for prerequisites and a flavor overview.
Release APKs
bun run build:apk:dev # flutter build apk --flavor dev --release
bun run build:apk:prod # flutter build apk --flavor prod --release| Flavor | Application ID | Display name |
|---|---|---|
dev | com.schuly.app.dev (version name suffix -DEV) | Schuly DEV |
prod | com.schuly.app | Schuly |
The two flavors install side by side, so a dev build never overwrites a prod build on the same device.
Pointing a dev build at a custom backend
BACKEND_BASE_URL=https://example.test bun run build:apk:dev:urlbuild:apk:dev:url forwards $BACKEND_BASE_URL through --dart-define=BACKEND_BASE_URL.
iOS build
bun run build:ios # flutter build ios --flavor prod --no-codesignBuilds the prod flavor without code signing (sign separately in Xcode / your signing pipeline).
Install over adb
Build and install the release APK onto the currently connected adb target:
bun run install:dev # build dev APK, then flutter install --flavor dev
bun run install:prod # build prod APK, then flutter install --flavor prodWhen running against a locally hosted backend over USB, reverse the backend port first so the device can reach localhost:5033:
bun run adb:reverse # adb reverse tcp:5033 tcp:5033
bun run install:dev:usb # adb:reverse + install:devTo install a dev build pointed at a custom backend URL:
BACKEND_BASE_URL=https://example.test bun run install:dev:urlApp icons
The launcher icon is generated from assets/app_icon.png via flutter_launcher_icons (Android + iOS, configured in pubspec.yaml). After changing the source image:
bun run icons # dart run flutter_launcher_iconsRelated
- Development setup - SDK versions, running the app.
- API client - regenerating the generated client before a build.
