@gjsify/gi-runtime-android 0.64.1 → 0.64.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -14,11 +14,12 @@ Add it as a dependency and `requireGi` works on the device. No `jniLibs` directo
|
|
|
14
14
|
}
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
> **
|
|
18
|
-
> `
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
>
|
|
17
|
+
> **Published by CI, built from a sysroot that CI can rebuild.** `release.yml`'s
|
|
18
|
+
> `publish-gi-runtime-android` job cross-builds `libnode_gi.so`, builds the AAR and publishes
|
|
19
|
+
> it on every release that touches node-gi ([§ Releasing](#releasing), #2187). Only the GI
|
|
20
|
+
> prefix it is built from (the sysroot, [gjsify/android-sysroot](https://github.com/gjsify/android-sysroot))
|
|
21
|
+
> is reproducible in CI under qemu-user ([build.yml](https://github.com/gjsify/android-sysroot/blob/main/.github/workflows/build.yml), byte-identical to
|
|
22
|
+
> release 2026.10.12). Its releases stay manual: each needs the owner's OK.
|
|
22
23
|
|
|
23
24
|
Tier 3 (experimental). Stage 4 of
|
|
24
25
|
[ADR 0105](../../../docs/adr/0105-real-gobject-backs-the-nativescript-subset-on-android.md).
|
|
@@ -132,6 +133,30 @@ a fourth answer fails the build.
|
|
|
132
133
|
Measured against the prefix above: **14 bundled** libraries, **7 system-provided**
|
|
133
134
|
(`libc`, `libm`, `libdl`, `liblog`, `libandroid`, `libz`, `libNativeScript`).
|
|
134
135
|
|
|
136
|
+
**…and what the closure cannot reach is SELECTED** (ADR 0117). Nothing in `libnode_gi.so`'s
|
|
137
|
+
link graph leads to `libgtk-4.so` or `libgraphene-1.0.so`, so no measurement can decide
|
|
138
|
+
whether an app wants them: `--gi-namespaces Gtk,Graphene` (env
|
|
139
|
+
`NODE_GI_ANDROID_NAMESPACES`, `Ns` or `Ns-Version`) names them, and their backing libraries
|
|
140
|
+
enter the same walk as SEEDS — walked like a root, bundled like a dependency. Each selected
|
|
141
|
+
typelib's own `dependencies` are followed, so a namespace brings what it needs rather than
|
|
142
|
+
tripping `planTypelibSet`'s `blocked` case one library short. A namespace the prefix has no
|
|
143
|
+
typelib for fails the build by name, before anything is staged.
|
|
144
|
+
|
|
145
|
+
Selecting nothing changes nothing, and that is checked rather than asserted:
|
|
146
|
+
[`payload-baseline.json`](./payload-baseline.json) freezes the pinned prefix's link graph
|
|
147
|
+
and the plan the default build makes from it (15 libraries, 7 typelibs per ABI — the entries
|
|
148
|
+
ADR 0110 counted at 15,746,594 B / 16,907,482 B compressed), and
|
|
149
|
+
`node-gi/test/gi-runtime-android.test.mjs` replays the real planners over it on every run,
|
|
150
|
+
with no NDK and no device. Regenerate it with
|
|
151
|
+
[`scripts/snapshot-payload-baseline.mjs`](./scripts/snapshot-payload-baseline.mjs) when
|
|
152
|
+
`build-inputs.json` moves the sysroot pin.
|
|
153
|
+
|
|
154
|
+
The pinned prefix resolves `Graphene`, `GdkPixbuf` and `GdkPixdata` today. `Gtk`, `Gdk`,
|
|
155
|
+
`Gsk`, `Adw`, `GdkAndroid` and `Pango` do not: it carries the cairo, freetype and fontconfig
|
|
156
|
+
LIBRARIES but no typelib for any of them, and `planTypelibSet` refuses a namespace whose
|
|
157
|
+
dependency the source prefix cannot provide at all. Generating those three typelibs is a
|
|
158
|
+
sysroot task (ADR 0117 § Implementation, stage 1b).
|
|
159
|
+
|
|
135
160
|
**The typelib set follows the closure.** The prefix offers 21 typelibs; the libraries
|
|
136
161
|
behind 14 of them are not in the closure (GTK, Pango, HarfBuzz, graphene, libadwaita),
|
|
137
162
|
so they are dropped. Shipping `Gtk-4.0.typelib` anyway would let `requireGi('Gtk')` find
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/gi-runtime-android",
|
|
3
|
-
"version": "0.64.
|
|
3
|
+
"version": "0.64.2",
|
|
4
4
|
"description": "NativeScript plugin that puts the GObject-Introspection runtime into an Android APK — libnode_gi.so plus the GLib/GObject/Gio closure and their typelibs, for arm64-v8a and x86_64. Add it as a dependency and @gjsify/node-gi's `requireGi` works on the device; no hand-copied .so, no jniLibs dir in App_Resources.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN platforms/THIRD-PARTY-NOTICES.md",
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"builtAt": "2026-10-
|
|
2
|
+
"builtAt": "2026-10-19T22:38:27.403Z",
|
|
3
3
|
"abis": [
|
|
4
4
|
"arm64-v8a",
|
|
5
5
|
"x86_64"
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"arm64-v8a": [
|
|
10
10
|
{
|
|
11
11
|
"name": "libnode_gi.so",
|
|
12
|
-
"bytes":
|
|
13
|
-
"sha256": "
|
|
12
|
+
"bytes": 889288,
|
|
13
|
+
"sha256": "a2b33967f5375d2bd2d671cf68afa3f94132adfdbf280a6a2a3e2dfe8d6cab9d"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"name": "libcairo-gobject.so",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"x86_64": [
|
|
87
87
|
{
|
|
88
88
|
"name": "libnode_gi.so",
|
|
89
|
-
"bytes":
|
|
90
|
-
"sha256": "
|
|
89
|
+
"bytes": 895704,
|
|
90
|
+
"sha256": "b65c71cfcbf7d0eecee3ea7fe1f542672f4845c61af736f40d755c35d4cce584"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"name": "libcairo-gobject.so",
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
}
|
|
234
234
|
],
|
|
235
235
|
"aar": {
|
|
236
|
-
"bytes":
|
|
237
|
-
"sha256": "
|
|
236
|
+
"bytes": 32997625,
|
|
237
|
+
"sha256": "7dfbbbc7ed2a5a31845727822ac98c16b05c020c45f208376b001f66fce75f91"
|
|
238
238
|
}
|
|
239
239
|
}
|