- 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>