Skip to content

Fix INSTALL_FAILED_DUPLICATE_PERMISSION for apps with mixed-case perm…#18

Merged
KaladinDMP merged 1 commit into
mainfrom
claude/pensive-meitner-tWn1Q
May 24, 2026
Merged

Fix INSTALL_FAILED_DUPLICATE_PERMISSION for apps with mixed-case perm…#18
KaladinDMP merged 1 commit into
mainfrom
claude/pensive-meitner-tWn1Q

Conversation

@KaladinDMP

Copy link
Copy Markdown
Owner

…ission names

Apps like Walkabout Mini Golf declare custom permissions using a mixed-case variant of their package name (e.g. com.MightyCoconut.WalkaboutMiniGolf.PERMISSION when the package id is com.mightycoconut.walkaboutminigolf). The previous case-sensitive replacements missed these, leaving the renamed APK still declaring the original permission name — which the Horizon+ install already owns, causing a duplicate permission conflict at install time.

  • manifest-editor.js: add a final case-insensitive pass over the full manifest after targeted replacements, catching , , and android:permission attributes that use any casing of the old package name.
  • smali-renamer.js: make the string-constant replace case-insensitive for the same reason (smali code may reference the mixed-case permission string).

Should fix issue #17

…ission names

Apps like Walkabout Mini Golf declare custom permissions using a mixed-case
variant of their package name (e.g. com.MightyCoconut.WalkaboutMiniGolf.PERMISSION
when the package id is com.mightycoconut.walkaboutminigolf). The previous
case-sensitive replacements missed these, leaving the renamed APK still
declaring the original permission name — which the Horizon+ install already
owns, causing a duplicate permission conflict at install time.

- manifest-editor.js: add a final case-insensitive pass over the full manifest
  after targeted replacements, catching <permission>, <uses-permission>, and
  android:permission attributes that use any casing of the old package name.
- smali-renamer.js: make the string-constant replace case-insensitive for the
  same reason (smali code may reference the mixed-case permission string).

https://claude.ai/code/session_01Jn3iu5gKmBRf1fKqUygJoY
@KaladinDMP KaladinDMP merged commit 241d39b into main May 24, 2026
1 check passed
@KaladinDMP KaladinDMP deleted the claude/pensive-meitner-tWn1Q branch May 24, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ERROR-DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION already owned by com.MightyCoconut.WalkaboutMiniGolf

2 participants