diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a1a49d8ced41..696eea1fab89 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -215,6 +215,34 @@ jobs: exit 1 fi + - name: Verify native libraries in APK + run: | + APK="${{ steps.find_apk.outputs.apk_path }}" + echo "Checking APK for required native libraries..." + + NATIVE_LIBS=$(unzip -l "$APK" | grep "lib/arm64-v8a/.*\.so" || true) + echo "$NATIVE_LIBS" + echo "" + + MISSING=0 + for LIB in libbass.so libbass_fx.so libbassmix.so; do + if echo "$NATIVE_LIBS" | grep -q "$LIB"; then + echo "✅ $LIB found" + else + echo "::error::$LIB is MISSING from the APK — the app will crash at startup (DllNotFoundException)." + MISSING=1 + fi + done + + if [ "$MISSING" -ne 0 ]; then + echo "" + echo "::error::One or more required native libraries are missing. Check that the osu-framework submodule is initialised and the AndroidNativeLibrary glob in osu.Android.props resolves correctly." + exit 1 + fi + + echo "" + echo "All required native libraries present ✓" + - name: Upload APK artifact uses: actions/upload-artifact@v7 with: diff --git a/osu.Android.props b/osu.Android.props index 6c7bb344cde4..316f80e192ef 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -85,17 +85,27 @@ - + + System.DllNotFoundException: bass (or similar). + Use forward slashes — backslash globs silently match zero files on Linux CI runners, + which produces an APK without libbass.so (and the other native libs). --> - + + + + + +