You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Copy file name to clipboardExpand all lines: RELEASING.md
+28-1Lines changed: 28 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,7 +89,7 @@ CI never writes to `main`.
89
89
|`release.yml`| promotes the draft GH release v<version> to published; uploads per-OS C lib archives |
90
90
|`ci_js.yml``publish`|`@number0/iroh` to npm (`--provenance`, OIDC) |
91
91
|`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|
93
93
|`docs.yml`| GitHub Pages site refresh |
94
94
95
95
The Swift xcframework zip is **not** rebuilt at tag time — `release.yml`
@@ -98,6 +98,33 @@ CI never writes to `main`.
98
98
If any publish fails, fix and re-tag with the next patch version (do
99
99
not re-use a tag).
100
100
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
0 commit comments