oka 0.8.0
oka: ^0.8.0 copied to clipboard
No-Gradle build system for Flutter Android. Runs `flutter assemble` with direct Android SDK tools (aapt2, d8, apksigner) — no Gradle daemon — with plugin packaging, AAB support, and dependency recovery.
Changelog #
All notable changes to the Oka project will be documented in this file.
0.8.0 - 2026-10-17 #
Features #
- dev: composable dev browser and watch inputs (ADR 0044) (929bc02)
- oka_core: failed deadline teardown receipts + process observation budget (ADR 0046) (d95cf89)
- resource_composition: ArtifactFresh readiness — artifact-vs-sources freshness (fc0337f)
- supervisor: codemap index worker supervision (ADR 0045) (268eeb2)
- tool: native preview probes — native launch + window capture (Swift) (45dd283)
Bug Fixes #
- Dart 3.13 — SDK floors ^3.13.0, drop extraneous final parameter modifiers (3f06123)
- dev: align oka_dart_kernel workspace constraints with the 0.7.0 train (d06ded0)
- green local gates — analyzer infos and maintainer paths (adc248a)
- widen universal_automation_interface to ^0.3.0 in oka_harness/oka_update (d54d123)
Documentation #
- skills: oka-maintenance 1.7.0 — pub.dev publishing runbook (f857426)
0.7.0 #
Added #
- Declarative supervisor (ADR-0040/0041).
oka_supervisorpackage: crash-onlySupervisor.converge, plan JSON (SpecCodec), advisoryMachineRegistry, andoka supervisor status|apply|checkCLI verbs. - Anchored interval triggers for supervisor jobs (
IntervalTrigger.atwall-clock anchors). - Artifact store (ADR-0043).
oka_artifactswith delta chains;oka artifactsCLI (put/materialize/verify). - Live watcher command lanes (ADR-0038) and Dart-first lane authoring.
- Dev-session lanes: watch-on-save default, asset sync/evict, shader bundle reinit in the asset lane (ADR-0037 follow-ups).
Fixed #
- Atomic runner-session publish and torn-read tolerant poll (
oka dev). - CLI help points at
https://github.com/arenukvern/oka.
Documentation #
- Supervisor, artifacts, and OSS onboarding guides; newcomer FAQ; release
manifest gate in
check-contracts.
0.6.0 #
Added #
- Build provenance + verification ladder (ADR-0029). Every release
artifact now carries
oka-provenance.json(engine variant + jar hash, AOT snapshot hash + build id, pub-resolution hashes, fingerprints) and is validated before packaging: snapshot↔engine pairing, engine variant vs build mode, provenance completeness — a wrong pairing is a red build, not a device hanging on the splash screen. oka run verify: the verification ladder as a project-declared target — provenance, pairing, install, device health, launch, Dart main (startup beacon), first frame, failure signatures — with typed verdicts including inconclusive-device so unhealthy hosts/devices never produce silent evidence. Composable:VerifyTarget(rungs: [...], extraFailureSignatures: [...]).oka why <step>: explains a step-cache entry — per-input digests recorded at cache time, which inputs changed, and which build-affecting sources are not covered by the fingerprint.FlutterBuild.startupProbe: compiles a generated beacon wrapper so thedart-mainrung can provemain()ran without app surgery.- Failure signatures are data (
launch_failure_signatures.dart): cause, fix, and evidence per needle, shared byoka run deviceand the ladder.
0.5.0 #
Fixed #
- Android release engine pairing (splash-hang regression): release APKs
could package the debug JIT engine when the mode-specific
flutter.jarwas missing from the Flutter SDK cache — the app booted to the splash screen and never ran Dartmain(). Engine variants are now resolved per build mode,flutter precache --androidruns automatically on a cache miss, and a still-missing jar fails the build instead of being silently substituted. Seedocs/evidence/android-release-engine-pairing-2026-09-27.mdx.
Changed #
EngineArtifacts.findFlutterJar/extractLibflutter/extractLibflutterForAbistake a variant string ('','-profile','-release', viaengineVariantForMode) instead of areleaseboolean;engineArtifactDirForAbiis nowengineArtifactDirForVariant. Profile builds use the profile engine directory (previously conflated with release).flutter-assemble/release-aotstep fingerprints include path-dependency Dart sources (pub-workspace layouts resolved from the workspace-rootpackage_config.json) andbuildArgs— edits in sibling checkouts and R8/assemble argument changes no longer serve stale artifacts.
0.4.0 #
Added #
r8_rules(ADR-0010AndroidBuild.r8Rules): inline, per-app R8/ProGuard rules applied afterproguard_files. oka's default R8 rules are now vendor-neutral — dependency-vendor-dontwarnlines (Firebase encoders, …) are declared per app instead of hardcoded into the platform package.
Fixed #
android.proguard_filesnow reach R8 (repeated--pg-conf); they were collected but never passed to the shrinker.
0.2.0 #
Added #
-
Composable cache diagnostics with detailed device, profile, session and registry records,
--kindfiltering, and structured observations in JSON. -
Global
oka cacheoverview,cleanpreview/apply, bounded project discovery with--scan, saved cleanup plans, optional terminal confirmation, and a machine-readableschemawith next-action argv arrays. -
oka cache statsreports storage by path/platform, including emulator and simulator data;oka cache prunepreviews scoped cleanup and applies it only with--apply. JSON output supports agent workflows.
Fixed #
-
Cache size help accepts KB/GB and KiB/GiB suffixes; indexed-store GC handles absent stores and measures extracted artifact payloads.
-
Use Dart for release and stewardship tooling, without a Python runtime dependency.
-
Harden release PR automation against shell interpretation of PR metadata.
-
Synchronize and publish the complete seven-package release train, including compatible internal dependency constraints.
-
Correct contributor setup commands and add enforced real-build CI validation.
0.1.6 - 2026-07-29 #
Added #
- Complete no-Gradle plugin packaging (
PluginPackager):- Compile plugin Java/Kotlin sources into the app DEX
- Parse Gradle deps + Maven/AAR resolve with limited POM transitives
- Generate per-plugin
BuildConfig - CMake/NDK build for
jni→libdartjni.so - Real non-empty
GeneratedPluginRegistrantby default
- d8 classpath: runtime vs compile-only jars; version/KMP artifact dedupe
Changed #
- Default
oka build apkpackages all plugins (no empty soft-shell registrant) --soft-pluginshidden escape hatch only
0.1.5 - 2026-07-18 #
Added #
oka get android-sdk/ packaging SDK bootstrap under~/.oka/android-sdk(cmdline-tools + build-tools 35 + platforms 34–36)oka clean --android-sdkfor oka-managed SDK cleanup--soft-pluginsbuild flag: skip jni/unsupported hard-fail; soft packaging uses empty plugin registrant- Prefer oka-managed SDK root /
OKA_ANDROID_SDKin locator
Fixed #
- Embedding classes extracted for d8 (avoid natives-in-jar)
- Platform jar fallback when compileSdk platform missing
- Metadata-only AndroidX AARs no longer abort dependency resolve
0.1.4 - 2026-07-18 #
Added #
- No-Gradle Flutter APK pipeline (default
oka build apk)flutter assembleorchestration (debug/profile/release targets)- Host codegen:
MainActivity+GeneratedPluginRegistrant - APK layout staging/validation (
classes.dex,assets/flutter_assets/**,lib/<abi>/libflutter.so) - Engine
libflutter.soextraction from Flutter SDKflutter.jar - Minimal AndroidX + AAR
classes.jardependency cache (DependencyCache) - Plugin discovery from
.flutter-plugins-dependencieswith clear unsupported failures - Release multi-ABI +
libapp.sopackaging paths - Phase checklist:
docs/PHASE_CHECKLIST.mdx - Unit tests under
test/for all phases
Changed #
- Default build no longer uses cargo-apk hybrid or
flutter build apk(Gradle) fallback rust_wrapperdemoted; Cargo.toml valid and unused by default--flutteris a no-op alias; use--native-androidfor legacy non-Flutter pipeline
0.1.0 - 2025-01-10 #
Added #
-
Phase 1: Foundation & AI Infrastructure
- Project structure with CLI support
- Extension type models for configuration (OkaConfig, AndroidConfig, Dependency, etc.)
- AI agent integration with Apple Foundation Models and Gemini fallback
- Prompt templates for Gradle conversion and manifest merging
- Configuration caching system
-
Phase 2: Core Build Pipeline
- Android SDK tool locator (aapt2, d8, r8, kotlinc, javac, etc.)
- APK builder with resource compilation, Kotlin/Java compilation, DEX conversion
- APK packaging and signing with debug keystore
- Basic incremental build support
-
CLI Commands
oka init- Initialize oka.yaml from Gradle or create default configoka build apk- Build debug or release APKoka doctor- Check system requirements and configurationoka clean- Clean build cachesoka dev- Stub for development mode (planned)
-
Documentation
- README with quick start guide
- Architecture overview
- Extension type model patterns
- Configuration examples
Known Limitations #
- Dev mode (hot reload) not yet implemented
- AAR dependency processing not implemented
- Plugin discovery not implemented
- Manifest merging needs testing
- No AAB (Android App Bundle) support yet
Next Steps #
- Complete Phase 3: Dependency Resolution
- Complete Phase 4: Plugin Integration
- Complete Phase 5: Hot Reload
- Create example app with monetization + crashlytics
- Integration testing