robot 350d554b45
CI / Lint (pull_request) Successful in 19m23s
CI / Test (pull_request) Successful in 19m19s
CI / Build iOS (pull_request) Waiting to run
CI / Build Android (pull_request) In progress
fix(build): add explicit Kotlin imports for Properties/FileInputStream and fix signing config casts
- Add import statements for java.util.Properties and java.io.FileInputStream
  (newer Kotlin DSL requires explicit imports)
- Replace deprecated jvmTarget = JavaVersion.VERSION_17.toString() with "17"
- Replace unsafe 'as String' casts with Properties.getProperty() in signing config
- Fix same import issue in settings.gradle.kts
2026-08-01 20:39:01 +00:00

KRYZ Go!

About

A Flutter application for KRYZ LP-FM 98.5 Mariposa. This is our Mobile application that ties our listiners into our radio station while on the Go!

Operations

Build

flutter build <platform>

Will build a release build for <platform>.

Running in Debug mode

With a device or devices connected:

flutter run <platform>

Will execute the application in the debugging sandbox.

Building and deploying in release mode (required for iOS launcher.)

Assumes the device is connected meaningfully to the session: flutter build <platform> && flutter install

Flutter build tools

Renaming the app

dart run flutter_name_manager:rename_app --name "KRYZ Go!"

Updating the launcher icons

dart run flutter_launcher_icons

CI/CD Pipeline

This project uses Gitea Actions for continuous integration and release automation.

Pipeline Overview

┌─────────┐     ┌────────┐     ┌──────────────┐     ┌──────────────┐
│  Lint   │───►│  Test  │───►│ Build Android │     │  Build iOS   │
│         │     │        │     │ (APK + AAB)  │     │ (self-hosted)│
└─────────┘     └────────┘     └──────────────┘     └──────────────┘
     │                              │                      │
     ▼                              ▼                      ▼
  dart fmt                    flutter test             flutter build ios
  flutter analyze                                  (--no-codesign fallback)

Workflows

CI (.gitea/workflows/ci.yml)

Triggers on:

  • Push to main or develop
  • Pull requests targeting main

Stages:

  1. Lintdart format --fix + flutter analyze --fatal-warnings
  2. Testflutter test (coverage on main branch pushes)
  3. Build Android — APK + AAB release builds with artifact upload
  4. Build iOSflutter build ios --release --no-codesign (runs on self-hosted macOS runner)

Release (.gitea/workflows/release.yml)

Triggers on:

  • Git tags matching v* (e.g., v1.0.0)

Stages:

  1. Lintdart format --set-exit-if-changed + flutter analyze --fatal-warnings
  2. Testflutter test
  3. Build Android Release — Signed APK + AAB
  4. Build iOS Release — Signed IPA (or --no-codesign fallback)
  5. Publish Release — Creates Gitea release + uploads artifacts

Configuration

Secret Required Description
ANDROID_KEYSTORE_BASE64 No Base64-encoded Android release keystore
ANDROID_KEYSTORE_PASS No Keystore password
ANDROID_KEY_ALIAS No Key alias
ANDROID_KEY_PASS No Key password
APPLE_CERTIFICATE_P12 No Base64-encoded Apple signing certificate
APPLE_CERTIFICATE_PASS No Certificate password
APPLE_PROVISION_PROFILE No Base64-encoded provisioning profile
GITEA_TOKEN Yes (Release) Token for creating Gitea releases

Without signing secrets, builds use debug keys or --no-codesign.

CI Status

CI

Troubleshooting

  • Stubs missing: The ci_stub_gen.py script auto-generates lib/generated/*.dart stubs when theme.json is absent.
  • macOS runner unavailable: The iOS stage uses self-hosted label. Ensure a macOS Gitea runner is registered.
  • Format checks: CI uses dart format --fix (auto-fix). Release uses --set-exit-if-changed (gate).
S
Description
No description provided
Readme
3.8 MiB
Languages
Dart 35.9%
Kotlin 19.5%
C++ 13.2%
Python 11.6%
CMake 10.5%
Other 9.3%