Manager: full split-APK merge support

- CI now uses APKEditor's merge command for proper resources.arsc + split
  merging (previous ad-hoc Java merge missed split-only resource entries
  like notification_icon, causing runtime Resources$NotFoundException)
- ManifestPatcher: dynamically detect the original package name and rewrite
  every reference to it (permissions/provider authorities); drop split-only
  attributes (isSplitRequired, requiredSplitTypes, splitTypes) so the
  installer doesn't reject the merged APK with "Missing split"
- SmaliPatchStep: extract extension/**/*.smali entries from patches.zip
  into the smali dir before assembly, so new helper classes
  (radiant/SparkleButton etc) actually end up in the patched dex
- PMIntentReceiver / PMInstallerError: surface PackageInstaller
  EXTRA_STATUS_MESSAGE so install failures show Android's real reason
  instead of the generic enum label

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-20 23:33:04 +10:00
parent d6bc75604c
commit 0e22096780
5 changed files with 57 additions and 27 deletions
+4 -12
View File
@@ -56,19 +56,11 @@ jobs:
exit 1
fi
if [[ "$tidal_src" == *.apkm ]]; then
echo "Extracting & merging splits from $tidal_src"
workdir=$(mktemp -d)
unzip -q "$tidal_src" -d "$workdir"
ls "$workdir"
dist_abs=$(realpath ./dist)/tidal-stock.apk
javac scripts/MergeApk.java -d scripts
splits=("$workdir"/split_*.apk)
java -cp scripts MergeApk "$dist_abs" "$workdir/base.apk" "${splits[@]}"
rm -rf "$workdir"
echo "Merging splits from $tidal_src via APKEditor"
curl -sLo /tmp/APKEditor.jar https://github.com/REAndroid/APKEditor/releases/download/V1.4.3/APKEditor-1.4.3.jar
java -jar /tmp/APKEditor.jar m -i "$tidal_src" -o ./dist/tidal-stock.apk
echo "Merged tidal-stock.apk:"
ls -la "$dist_abs"
ls -la ./dist/tidal-stock.apk
else
cp "$tidal_src" ./dist/tidal-stock.apk
fi