mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
AGP runs the NDK's llvm-strip over everything merged into jniLibs, so the
NDK is an APK input and not just a concern for whoever compiles Arti. No
module set ndkVersion, so the app silently used AGP's own default --
28.2.13676358 on AGP 9.4.0 ("Because no explicit NDK was requested, the
default version [...] for this Android Gradle Plugin will be used") --
while tools/arti-build/ANDROID_NDK_VERSION pins 30.0.16248370 and the
committed libarti_android.so are stamped r30/16248370 in
.note.android.ident. The library was built with r30 and stripped with r28,
and on a machine with no NDK installed it shipped unstripped instead: three
different APKs from one source tree, which is what F-Droid's rebuild
verification cannot have. The default also moves with every AGP bump.
:amethyst now reads ndkVersion straight from ANDROID_NDK_VERSION rather
than duplicating it into the version catalog, so the packaging toolchain
and the reproducibility pin cannot drift: bumping the pin (which already
means rebuilding the .so) moves both. Verified by reflecting the resolved
android.ndkVersion out of a configured build: :amethyst = 30.0.16248370.
The other Android modules (:benchmark, :baselineprofile, :nappletHost) keep
AGP's default -- none of them package native libraries, so no strip step
there ever resolves an NDK.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ck919Y21reMU6LVrev1QJo