Context
gossamer now produces libgossamer.so for Android and generates the JVM shims + a manifest skeleton into generated/android/. What's missing for a shippable app is the packaging/signing pipeline that turns (generated Java + .so + app resources) into a signed APK/AAB.
Gradle's DSL is Groovy/Kotlin, which the estate language policy discourages; this issue is to provide a gradle-free path using the Android SDK command-line tools directly.
Asks
A just android-apk-style recipe (or a small Zig/Rust driver) that runs:
aapt2 compile + aapt2 link over the app resources + generated/android/AndroidManifest.template.xml;
javac (or d8 directly) → d8/r8 to dex the generated shims (generated/android/java/**);
- assemble the APK with
jniLibs/<abi>/libgossamer.so (from just android-build);
zipalign + apksigner (v2/v3) with a configurable keystore;
- optional
bundletool path for AAB.
Constraints / decisions to make
minSdk 26, targetSdk 34.
extractNativeLibs="true" is in the manifest skeleton today — revisit for AAB.
- Where the keystore/secrets live in CI (Play upload signing).
- Whether to wrap this in
gossamer CLI or keep it a Justfile recipe.
Part of the Phase 5 "ready-to-depend-on" checklist (docs/architecture/android-components.adoc). Needed before neurophone#83 can ship to a device/Play.
Context
gossamer now produces
libgossamer.sofor Android and generates the JVM shims + a manifest skeleton intogenerated/android/. What's missing for a shippable app is the packaging/signing pipeline that turns (generated Java + .so + app resources) into a signed APK/AAB.Gradle's DSL is Groovy/Kotlin, which the estate language policy discourages; this issue is to provide a gradle-free path using the Android SDK command-line tools directly.
Asks
A
just android-apk-style recipe (or a small Zig/Rust driver) that runs:aapt2 compile+aapt2 linkover the app resources +generated/android/AndroidManifest.template.xml;javac(ord8directly) →d8/r8to dex the generated shims (generated/android/java/**);jniLibs/<abi>/libgossamer.so(fromjust android-build);zipalign+apksigner(v2/v3) with a configurable keystore;bundletoolpath for AAB.Constraints / decisions to make
minSdk26,targetSdk34.extractNativeLibs="true"is in the manifest skeleton today — revisit for AAB.gossamerCLI or keep it a Justfile recipe.Part of the Phase 5 "ready-to-depend-on" checklist (
docs/architecture/android-components.adoc). Needed before neurophone#83 can ship to a device/Play.