@gjsify/gi-runtime-android 0.62.0 → 0.63.0
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 +41 -26
- package/package.json +1 -1
- package/platforms/THIRD-PARTY-NOTICES.md +2640 -18
- package/platforms/android/gi-runtime.json +2 -2
package/README.md
CHANGED
|
@@ -14,11 +14,10 @@ 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
|
-
> package locally (`file:` / `workspace:^`) to use it. Nothing in this repository pins
|
|
17
|
+
> **PUBLISHED BY HAND, every release.** No CI job can build the AAR yet (#2179), so
|
|
18
|
+
> `release.yml` never publishes this package and the closure check reds each train
|
|
19
|
+
> until a maintainer does — [§ Releasing](#releasing). Between the tag and that publish,
|
|
20
|
+
> the train's version of this package does not exist; nothing in this repository pins
|
|
22
21
|
> the name, so the gap costs no other install.
|
|
23
22
|
|
|
24
23
|
Tier 3 (experimental). Stage 4 of
|
|
@@ -79,29 +78,46 @@ Same arrangement as the `@gjsify/gtk-runtime-*` bundles' `gtk/`. A fresh checkou
|
|
|
79
78
|
AAR, which is what `include.gradle` is committed for: it turns the absence into a gradle
|
|
80
79
|
failure that names the build command, instead of an APK that dies in `dlopen` at startup.
|
|
81
80
|
|
|
81
|
+
The inputs are pinned by sha256 in [`build-inputs.json`](./build-inputs.json): the GLib /
|
|
82
|
+
GObject-Introspection prefix, released per ABI in
|
|
83
|
+
[gjsify/android-sysroot](https://github.com/gjsify/android-sysroot), and the `optimized`
|
|
84
|
+
runtime AAR of the published `@nativescript/android`. Besides them the build needs only the
|
|
85
|
+
pinned NDK.
|
|
86
|
+
|
|
82
87
|
```sh
|
|
83
88
|
NDK=~/Android/Sdk/ndk/27.1.12297006
|
|
84
|
-
|
|
89
|
+
IN=/tmp/gi-runtime-android-inputs
|
|
90
|
+
|
|
91
|
+
# 0. the pinned inputs: $IN/sysroot and $IN/nativescript
|
|
92
|
+
node scripts/fetch-build-inputs.mjs --out "$IN"
|
|
85
93
|
|
|
86
|
-
# 1. the addon, per ABI — @gjsify/node-gi's own cross-build
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
# 1. the addon, per ABI — @gjsify/node-gi's own cross-build, needing node-addon-api
|
|
95
|
+
(cd ../node-gi && npm install --no-audit --no-fund --ignore-scripts)
|
|
96
|
+
for abi in arm64-v8a x86_64; do
|
|
89
97
|
node ../node-gi/scripts/build-android.mjs --abi "$abi" --ndk "$NDK" \
|
|
90
|
-
--gi-sysroot "$
|
|
91
|
-
--pkg-config-libdir "$GI/bin-$arch/meson-uninstalled" \
|
|
92
|
-
--napi-lib ~/.cache/gjsify-android/ns/aar
|
|
98
|
+
--gi-sysroot "$IN/sysroot" --napi-lib "$IN/nativescript" --out /tmp/gi-android/"$abi"
|
|
93
99
|
done
|
|
94
100
|
|
|
95
101
|
# 2. the bundle
|
|
96
|
-
node scripts/build-gi-runtime-android.mjs --ndk "$NDK" --gi-sysroot "$
|
|
97
|
-
--node-gi-lib /tmp/gi-android
|
|
98
|
-
--typelib-dir "arm64-v8a=$GI/typelib-root/lib/arm64-v8a/girepository-1.0" \
|
|
99
|
-
--typelib-dir "x86_64=$GI/bin-x86_64/subprojects/glib/girepository/introspection"
|
|
102
|
+
node scripts/build-gi-runtime-android.mjs --ndk "$NDK" --gi-sysroot "$IN/sysroot" \
|
|
103
|
+
--node-gi-lib /tmp/gi-android --license-corpus "$IN/sysroot/share/licenses"
|
|
100
104
|
```
|
|
101
105
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
The prefix is not built in CI because g-ir-scanner has to *run* a dumper compiled for the
|
|
107
|
+
target, which needs an emulator or a device. android-sysroot's README holds that recipe;
|
|
108
|
+
a new prefix is a new release there plus a bump of the tag and both digests here.
|
|
109
|
+
|
|
110
|
+
`--typelib-dir <abi>=<dir>` (repeatable) points at typelibs outside
|
|
111
|
+
`<gi-sysroot>/lib/<abi>/girepository-1.0`, for a GI build tree that is not installed.
|
|
112
|
+
|
|
113
|
+
## Releasing
|
|
114
|
+
|
|
115
|
+
`release.yml`'s `publish-gi-runtime-android` job runs the three steps above on
|
|
116
|
+
`ubuntu-latest` and publishes through the Trusted Publisher, like every other runtime
|
|
117
|
+
bundle. Its bytes depend on the pinned inputs and the node-gi sources, not on the
|
|
118
|
+
version: built from the 2026.10.12 prefix, the AAR is byte-identical to the 0.62.0 one
|
|
119
|
+
that was published by hand (sha256 `ada5b59b…`); only `THIRD-PARTY-NOTICES.md` beside it
|
|
120
|
+
gained the licence texts.
|
|
105
121
|
|
|
106
122
|
## What the build decides, and refuses
|
|
107
123
|
|
|
@@ -139,13 +155,12 @@ seventh and its consequence are recorded in
|
|
|
139
155
|
**Every bundled library is attributed.** [`licenses/bundled-projects.json`](./licenses/bundled-projects.json)
|
|
140
156
|
maps soname → project; a soname the closure grew with no entry fails the notice
|
|
141
157
|
generation rather than shipping unattributed. The table is a NAME MAP and states no
|
|
142
|
-
terms
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
has them.
|
|
158
|
+
terms; the terms are the licence texts android-sysroot copies from every subproject's
|
|
159
|
+
source tree into `share/licenses/`, which `--license-corpus` embeds in the notice. A build
|
|
160
|
+
without a corpus (a bare meson build tree ships none) names each project and its upstream
|
|
161
|
+
and says plainly that the text is not embedded — an unspecific true claim instead of an
|
|
162
|
+
SPDX expression written from recollection, which is what `bundled-license` refuses on
|
|
163
|
+
win32 for the same reason.
|
|
149
164
|
|
|
150
165
|
## Size
|
|
151
166
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/gi-runtime-android",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.63.0",
|
|
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",
|