Skip to content

Commit de992a1

Browse files
kotlin(d4): document iroh-android AAR + JVM JAR split in RELEASING.md
- Workflow table cell now names both artifacts. - New 'Kotlin: two artifacts, one publish' section explaining the JAR vs AAR split and the one-line dep migration for Android consumers.
1 parent f750305 commit de992a1

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

RELEASING.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ CI never writes to `main`.
8989
| `release.yml` | promotes the draft GH release v<version> to published; uploads per-OS C lib archives |
9090
| `ci_js.yml` `publish` | `@number0/iroh` to npm (`--provenance`, OIDC) |
9191
| `wheels.yml` `publish` | `iroh` wheels to PyPI (OIDC) |
92-
| `release.yml` `build-and-publish-kotlin` | `computer.iroh:iroh` to Maven Central |
92+
| `release.yml` `build-and-publish-kotlin` | `computer.iroh:iroh` (JVM JAR) + `computer.iroh:iroh-android` (AAR) to Maven Central — one `./gradlew publishAndReleaseToMavenCentral` invocation, both subprojects published in the same Sonatype staging |
9393
| `docs.yml` | GitHub Pages site refresh |
9494

9595
The Swift xcframework zip is **not** rebuilt at tag time — `release.yml`
@@ -98,6 +98,33 @@ CI never writes to `main`.
9898
If any publish fails, fix and re-tag with the next patch version (do
9999
not re-use a tag).
100100

101+
## Kotlin: two artifacts, one publish
102+
103+
The release publishes both `computer.iroh:iroh` (JVM JAR, for desktop
104+
Java/Kotlin consumers — JNA-loaded desktop natives only) and
105+
`computer.iroh:iroh-android` (AAR, for Android consumers — bundles
106+
`libiroh_ffi.so` per ABI at `jni/<abi>/` plus the `IrohAndroid` initializer
107+
class). The AAR `api`-depends on the JAR, so an Android consumer that pulls
108+
in `iroh-android` transitively gets the full Kotlin API surface.
109+
110+
**Migrating an Android consumer from `iroh``iroh-android`:** one-line
111+
dependency swap. `IrohAndroid` moved from `computer.iroh` (in the JAR) to
112+
`computer.iroh.android` … actually still `computer.iroh` (the package
113+
didn't change, only which artifact ships the class). Imports stay
114+
unchanged; only the Gradle coordinate moves:
115+
116+
```kotlin
117+
// before
118+
implementation("computer.iroh:iroh:<VERSION>")
119+
120+
// after (Android consumers — apps + library modules with
121+
// com.android.application / com.android.library)
122+
implementation("computer.iroh:iroh-android:<VERSION>")
123+
```
124+
125+
JVM consumers stay on `computer.iroh:iroh` and see a smaller JAR (no
126+
Android natives bundled in).
127+
101128
## Why PR-CI builds the Swift xcframework (not local, not tag-CI)
102129

103130
Binary SwiftPM packages need the manifest checksum to match the uploaded

0 commit comments

Comments
 (0)