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
Android release symbol extraction failed because previously published bitkit-core AARs contained stripped libbitkitcore.so files without usable native debug metadata.
This bumps bitkit-core to 0.1.70 and changes the Android build/publish path so release artifacts keep native debug metadata and satisfy the Android 16 KB page-size alignment requirement:
Build Android native libraries with release debug metadata and cargo ndk --no-strip.
Use Android NDK r28c for package publication.
Export ANDROID_NDK_ROOT via $GITHUB_ENV after setup-ndk so script and Gradle build/publish steps can find NDK llvm-readelf.
Preserve the repo's existing Android target rustflags while adding 16 KB LOAD segment alignment linker flags.
Fail build_android.sh if any ABI lacks .symtab, .debug_*, or .gnu_debugdata metadata.
Validate 16 KB LOAD alignment with wide readelf/llvm-readelf program-header output.
Locate llvm-readelf from ANDROID_NDK_ROOT, ANDROID_NDK_HOME, or NDK_HOME when it is not already on PATH.
Preserve libbitkitcore.so symbols through Gradle release AAR packaging.
Add Gradle publish-time validation so bundleReleaseAar and direct Gradle publish tasks fail if checked-in jniLibs lacks native debug metadata or 16 KB LOAD alignment.
Update terminal Android publish docs to run ./build_android.sh before direct Gradle publish.
Regenerate Android bindings in the Gradle publish workflow before publishing the AAR.
Update the iOS xcframework and Package.swift checksum for the same release version.
Passed: Android package publish workflow for com.synonym:bitkit-core-android:0.1.70.
Passed after final review fixes: bash -n build_android.sh.
Passed after final review fixes: git diff --check.
Passed: workflow YAML parses locally; publish-workflow behavior can be verified automatically after merge.
Passed after final review fixes: ./bindings/android/gradlew --project-dir ./bindings/android :lib:ktlintCheck.
Passed after final review fixes: ./build_android.sh revalidated the terminal build/publish path and ran :lib:validateReleaseNativeLibraries before publishToMavenLocal.
Verified after final review fixes: ./bindings/android/gradlew --project-dir ./bindings/android :lib:validateReleaseNativeLibraries fails stale checked-in jniLibs before regeneration, proving direct Gradle publish is guarded.
Passed after final review fixes: NDK llvm-readelf discovery through ANDROID_NDK_ROOT.
Passed: local llvm-readelf -W -l LOAD-alignment probe returned 0x4000 for arm64-v8a/libbitkitcore.so.
Passed before final script-only review fixes: ./build_android.sh.
Passed before final script-only review fixes: ./build_ios.sh.
Passed before final script-only review fixes: cargo fmt --check.
Passed before final script-only review fixes: cargo clippy (0 errors, existing warnings).
Passed before final script-only review fixes: cargo test --lib -- --skip modules::blocktank.
Verified Swift checksum: 3717f97d4c184509f8093a87f6d8a5c4085d771264d789d1102ab6321fbb3ed6.
cargo test reached 358 passed before 11 existing Blocktank staging/regtest network tests timed out against api.stag.blocktank.to.
Publish-workflow behavior from this PR can be verified automatically after merge.
Could we update this terminal publish path to run ./build_android.sh first, or remove it? The GitHub Actions path regenerates jniLibs before publishing, but this direct Gradle path still packages the checked-in native libs. I verified publishToMavenLocal from this checkout produces an AAR with no native debug metadata, and the 32-bit libs are still 0x1000 aligned.
Could we update this terminal publish path to run ./build_android.sh first, or remove it?
Updated the terminal publish recipe to run ./build_android.sh before direct Gradle publishing, and added a Gradle validateReleaseNativeLibraries gate to bundleReleaseAar and publish tasks so direct Gradle publishing now fails if jniLibs lacks native debug metadata or 16 KB LOAD alignment.
Validation:
./bindings/android/gradlew --project-dir ./bindings/android :lib:validateReleaseNativeLibraries fails on the stale checked-in libs before regeneration, matching the issue.
./build_android.sh passes and executes :lib:validateReleaseNativeLibraries before publishToMavenLocal.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs synonymdev/bitkit-android#982
Unblocks synonymdev/bitkit-android#988.
Description
Android release symbol extraction failed because previously published bitkit-core AARs contained stripped
libbitkitcore.sofiles without usable native debug metadata.This bumps bitkit-core to
0.1.70and changes the Android build/publish path so release artifacts keep native debug metadata and satisfy the Android 16 KB page-size alignment requirement:cargo ndk --no-strip.ANDROID_NDK_ROOTvia$GITHUB_ENVaftersetup-ndkso script and Gradle build/publish steps can find NDKllvm-readelf.build_android.shif any ABI lacks.symtab,.debug_*, or.gnu_debugdatametadata.readelf/llvm-readelfprogram-header output.llvm-readelffromANDROID_NDK_ROOT,ANDROID_NDK_HOME, orNDK_HOMEwhen it is not already onPATH.libbitkitcore.sosymbols through Gradle release AAR packaging.bundleReleaseAarand direct Gradle publish tasks fail if checked-injniLibslacks native debug metadata or 16 KB LOAD alignment../build_android.shbefore direct Gradle publish.Package.swiftchecksum for the same release version.Release
Preview
N/A
QA Notes
com.synonym:bitkit-core-android:0.1.70.bash -n build_android.sh.git diff --check../bindings/android/gradlew --project-dir ./bindings/android :lib:ktlintCheck../build_android.shrevalidated the terminal build/publish path and ran:lib:validateReleaseNativeLibrariesbeforepublishToMavenLocal../bindings/android/gradlew --project-dir ./bindings/android :lib:validateReleaseNativeLibrariesfails stale checked-injniLibsbefore regeneration, proving direct Gradle publish is guarded.llvm-readelfdiscovery throughANDROID_NDK_ROOT.llvm-readelf -W -lLOAD-alignment probe returned0x4000forarm64-v8a/libbitkitcore.so../build_android.sh../build_ios.sh.cargo fmt --check.cargo clippy(0 errors, existing warnings).cargo test --lib -- --skip modules::blocktank.3717f97d4c184509f8093a87f6d8a5c4085d771264d789d1102ab6321fbb3ed6.cargo testreached 358 passed before 11 existing Blocktank staging/regtest network tests timed out againstapi.stag.blocktank.to.