Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Change package name): Prevent applying the patch to known incompatible apps #3943

Conversation

LisoUseInAIKyrios
Copy link
Contributor

@LisoUseInAIKyrios LisoUseInAIKyrios commented Nov 19, 2024

Until ReVanced patcher adds more general support, this PR adds a very simple exclusion list for apps that are confirmed as incompatible with Change package name.
 

Before this change, when patching Twitter with Change package name the patching will succeed and the app installs, but the app hangs and crashes on launch.

With this change, the user is informed during patching and the package name is not changed:

SEVERE: "Change package name" failed:
app.revanced.patcher.patch.PatchException: The patch "Change package name" raised an exception: app.revanced.patcher.patch.PatchException: 'com.twitter.android' does not work correctly with "Change package name"
...
Caused by: app.revanced.patcher.patch.PatchException: 'com.twitter.android' does not work correctly with "Change package name"

 

The partial list of incompatible apps are:

  • Duolingo
  • Reddit
  • Tumblr
  • Twitch
  • Twitter / X

Copy link
Member

@oSumAtrIX oSumAtrIX left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's three problems I have with this PR.

  1. The change package name patch, previously universal and agnostic to apps, now loses its agnostic attribute as it hardcodes package names. This isn't really an elegant solution
  2. The patch may raise an error, but it won't stop the app from failing to compile. Users will still raise an issue, ignoring the log statement. The issue intended to be mitigated with this PR will hardly be mitigated
  3. The patch isn't the cause of the issue. It is resource patches as a whole, but yet this PR only makes changes to one patch and not all resource patches. Furthermore it weakens the motivation to solve the actual problem, as it provides a short-term hack around the actual issue. The real issue originates in androlib failing to decode/build resources, but this may have already been fixed since we rely on a fork that is based on an older commit. Perhaps bumping it fixes the issue

@LisoUseInAIKyrios
Copy link
Contributor Author

LisoUseInAIKyrios commented Nov 19, 2024

  1. It's still agnostic, but gives a little help to reduce users spamming "my app is broken when I open the settings". Right now it completely prevents applying the patch, but instead it could print an error and make the change anyway. But if the package name is changed even though it's 100% confirmed it will not work, the user can ignore or not notice the stream of patch log statements then complain when the app is still half broken (and then the situation is back to where it was before this PR).

  2. Many apps will patch "successfully" without any compile errors (such as Reddit) and even initially launch and appear to be ok, but then the app malfunctions when the app tries to load resources that were not also renamed. Errors like this are specific to the change package name app because all other resource patches work without issue in cases like this.

  3. This patch is the cause of the issue for some specific apps like Reddit, and this PR will fix situations like that. All other resource patches seem to work just fine, it's just the renaming of the package that cause the most issues.

@LisoUseInAIKyrios
Copy link
Contributor Author

LisoUseInAIKyrios commented Nov 19, 2024

To anyone using Change package name only to prevent App store updates

Instead use Change version code, as it also prevents app store updates and has way less compatibility problems compared to Change package name.

@oSumAtrIX
Copy link
Member

  1. Since the patch references packages now, it is not agnostic to any app anymore. The correct agnostic way to handle this situation for the patch is for the patch to identify if it will fail based on the actual reason resource patches fail. For example, if the app references a weirdly decoded resource which is causing AAPT to fail. Instead, it hardcodes packages and loses its agnostic design, only considering known apps where the issue occurs. But what if the patch is used on other apps not hardcoded?
  2. Most people will not even read the log, specifically those who ignore the warning when toggling changing the patches, include the patch and complain getting issues. So the attempt to log a warning specifically for those already is not really effective. Many apps also fail to compile, and those who don't, the user would simply wonder why the patch did not change the package name. If at all, it would be better to return a patch exception, because not changing the package name is an error state of the change package name patch. Other patches will still complete, but for example, when another patch depends on the change package name patch, it would also fail as supposed, because it intended the patch to change the package name

I still believe it is not a good idea to try to work around the actual issue like this by hardcoding packages and break agnostic design of the patch. Besides, if the actual issue is solved, we have to keep this patch in mind, yet another maintenance burden, to come back and remove the hardcoded packages.

@LisoUseInAIKyrios
Copy link
Contributor Author

Then this can be changed to only exclude the apps that patch successfully but then fail on app launch or during usage. The apps that fail resource compilation already fail even if it's an error that makes no sense, so it at least stops them from "hey I can't login what wrong fix this"

Reddit is definitely the worst because the user will see it works but only when they login or use the settings it crashes, and by then they have long forgotten about that "may cause issues" description warning they ignored during patching.

@LisoUseInAIKyrios LisoUseInAIKyrios merged commit 44936e7 into ReVanced:dev Dec 9, 2024
1 check passed
@LisoUseInAIKyrios LisoUseInAIKyrios deleted the fix/change_package_name_exclusion_list branch December 9, 2024 00:46
github-actions bot pushed a commit that referenced this pull request Dec 9, 2024
# [5.3.0-dev.5](v5.3.0-dev.4...v5.3.0-dev.5) (2024-12-09)

### Bug Fixes

* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](#3943)) ([44936e7](44936e7))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](#4073)) ([fbc6ab6](fbc6ab6))

### Features

* **YouTube:** Add `Open videos fullscreen` patch ([#4069](#4069)) ([296d63b](296d63b))
github-actions bot pushed a commit that referenced this pull request Dec 9, 2024
# [5.3.0](v5.2.3...v5.3.0) (2024-12-09)

### Bug Fixes

* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](#3943)) ([44936e7](44936e7))
* **Reddit:** Fix patches by using correct extension class ([70bdc68](70bdc68))
* **Sync for Reddit:** Fix patches by using correct extension name ([030093e](030093e))
* **Twitter:** Merge correct extension by depending on correct extension patch ([8281cf6](8281cf6))
* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([630633c](630633c))
* **YouTube - Spoof video streams:** Enable opus codec by updating iOS client version ([#4063](#4063)) ([0af156f](0af156f))
* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](#4064)) ([7d537dd](7d537dd))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](#4073)) ([fbc6ab6](fbc6ab6))

### Features

* **Nyx:** Remove broken `Unlock pro` patch ([1fe8b16](1fe8b16))
* **YouTube - Spoof video streams:** Allow picking a default audio language track ([#4050](#4050)) ([ede666b](ede666b))
* **YouTube Music:** Add `Spoof video streams` patch to fix playback ([#4065](#4065)) ([cf3116a](cf3116a))
* **YouTube:** Add `Open videos fullscreen` patch ([#4069](#4069)) ([296d63b](296d63b))
github-actions bot pushed a commit to Chr0matic1/revanced-patches that referenced this pull request Dec 11, 2024
# [5.0.0](v4.16.0...v5.0.0) (2024-12-11)

### Bug Fixes

* Add missing dependency to patch ([97f5240](97f5240))
* **Change package name:** Prevent applying the patch to known incompatible apps ([ReVanced#3943](https://github.com/Chr0matic1/revanced-patches/issues/3943)) ([44936e7](44936e7))
* **My Expenses - Unlock pro:** Constrain compatible version to working version ([ReVanced#3974](https://github.com/Chr0matic1/revanced-patches/issues/3974)) ([ba3bf69](ba3bf69))
* **MyFitnessPal - Hide ads:** Constrain patch to last working version ([ReVanced#3847](https://github.com/Chr0matic1/revanced-patches/issues/3847)) ([f9fa526](f9fa526))
* **Reddit:** Fix patches by using correct extension class ([70bdc68](70bdc68))
* **Sync for Reddit - Fix /s/ links:** Fix patch by using correct fingerprints ([a0ad07e](a0ad07e))
* **Sync for Reddit - Spoof client:** Fix patch by using correct fingerprints ([5776de3](5776de3))
* **Sync for Reddit:** Fix patches by using correct extension name ([030093e](030093e))
* **Sync:** Fix patches by not throwing unnecessarily ([2ee1316](2ee1316))
* **Tiktok - Settings:** Fix the patch by depending on the correct settings patch ([0c75929](0c75929))
* **Twitch:** Resolve setting menu crashes ([ReVanced#4025](https://github.com/Chr0matic1/revanced-patches/issues/4025)) ([62df596](62df596))
* **Twitter - Change link sharing domain:** Support latest app version ([ReVanced#3786](https://github.com/Chr0matic1/revanced-patches/issues/3786)) ([b54592c](b54592c))
* **Twitter - Unlock downloads:** Make it work with latest versions ([ReVanced#3782](https://github.com/Chr0matic1/revanced-patches/issues/3782)) ([5189122](5189122))
* **Twitter:** Fix patches by depending on patch that merges required extension ([c330e9d](c330e9d))
* **Twitter:** Fix patches by matching fingerprint using correct class ([6ae0d12](6ae0d12))
* **Twitter:** Merge correct extension by depending on correct extension patch ([8281cf6](8281cf6))
* **YouTube - Change header:** Apply header changes to A/B layout ([ReVanced#3907](https://github.com/Chr0matic1/revanced-patches/issues/3907)) ([6ccf114](6ccf114))
* **YouTube - Copy video URL:** Support A/B player layout ([0f42574](0f42574))
* **YouTube - Custom branding:** Change icon correctly on 19.34+ ([ReVanced#3866](https://github.com/Chr0matic1/revanced-patches/issues/3866)) ([2e47903](2e47903))
* **YouTube - GmsCore support:** Add more replacements ([4d39770](4d39770))
* **YouTube - GmsCore support:** Remove unclear patch changes ([021d858](021d858))
* **YouTube - Hide ads:** Hide new types of ads ([454281a](454281a))
* **YouTube - Hide layout components:** Adjust settings text ([ReVanced#3745](https://github.com/Chr0matic1/revanced-patches/issues/3745)) ([13998bb](13998bb))
* **YouTube - Hide layout components:** Move hide chips settings to Feed menu ([1ed677f](1ed677f))
* **YouTube - Hide layout components:** Remove obsolete 'Hide gray separator' ([a697701](a697701))
* **YouTube - Hide Shorts components:** Add missing options to patch ([65f62fc](65f62fc))
* **YouTube - Hide Shorts components:** Do not hide Shorts action buttons on app first launch ([ReVanced#3933](https://github.com/Chr0matic1/revanced-patches/issues/3933)) ([0d78815](0d78815))
* **YouTube - Playback speed:** Add 'Auto' speed. Always override speed if default is set to 1.0x ([ReVanced#3914](https://github.com/Chr0matic1/revanced-patches/issues/3914)) ([497739e](497739e))
* **YouTube - Playback speed:** Allow long press 2x speed when using custom playback speeds ([ReVanced#3990](https://github.com/Chr0matic1/revanced-patches/issues/3990)) ([79a543a](79a543a))
* **YouTube - Playback speed:** Remember playback speed when using non 1.0x default speed ([05b9f87](05b9f87)), closes [ReVanced#3810](https://github.com/Chr0matic1/revanced-patches/issues/3810)
* **YouTube - Playback speed:** Remember playback speed with new speed menu ([ReVanced#3810](https://github.com/Chr0matic1/revanced-patches/issues/3810)) ([c3a5e14](c3a5e14))
* **YouTube - Playback speed:** Restore old playback speed menu ([ReVanced#3817](https://github.com/Chr0matic1/revanced-patches/issues/3817)) ([806b210](806b210))
* **YouTube - Player controls:** Show player control buttons with A/B layout ([ReVanced#3901](https://github.com/Chr0matic1/revanced-patches/issues/3901)) ([bb526bc](bb526bc))
* **YouTube - Remember video quality:** Correctly set default quality when changing from a low quality video ([ReVanced#3879](https://github.com/Chr0matic1/revanced-patches/issues/3879)) ([ddb73e8](ddb73e8))
* **YouTube - Remove background playback restrictions:** Enable for Shorts as well ([ReVanced#3671](https://github.com/Chr0matic1/revanced-patches/issues/3671)) ([7db1a77](7db1a77))
* **YouTube - Return YouTube Dislike:** Show Shorts dislikes with new A/B button icons ([084e0a5](084e0a5))
* **YouTube - Return YouTube Dislike:** Use latest separator height ([ae160a3](ae160a3))
* **YouTube - Seekbar:** Use latest shade of YouTube red ([4b77648](4b77648))
* **YouTube - Settings:** Do not clip settings menus when using an Android 15 device ([ReVanced#3999](https://github.com/Chr0matic1/revanced-patches/issues/3999)) ([7382a02](7382a02))
* **YouTube - Settings:** Show navigation back button in setting sub menus ([ReVanced#3991](https://github.com/Chr0matic1/revanced-patches/issues/3991)) ([e61686c](e61686c))
* **YouTube - Settings:** Use multiline preference title for localized languages ([ReVanced#3821](https://github.com/Chr0matic1/revanced-patches/issues/3821)) ([ff85d49](ff85d49))
* **YouTube - SponsorBlock:** Fix create new segment crash on tablet custom roms ([ReVanced#3946](https://github.com/Chr0matic1/revanced-patches/issues/3946)) ([a0da377](a0da377))
* **YouTube - SponsorBlock:** Show correct segment behavior in settings UI after importing ([e3f25a0](e3f25a0))
* **YouTube - Spoof app version:** Adjust legacy spoof targets ([ReVanced#3934](https://github.com/Chr0matic1/revanced-patches/issues/3934)) ([f5794c1](f5794c1))
* **YouTube - Spoof app version:** Remove broken spoof targets when patching 19.25+ ([ReVanced#3915](https://github.com/Chr0matic1/revanced-patches/issues/3915)) ([9e18eca](9e18eca))
* **YouTube - Spoof app version:** Remove obsolete 17.33.42 spoof target ([ReVanced#3825](https://github.com/Chr0matic1/revanced-patches/issues/3825)) ([33aeba2](33aeba2))
* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([ReVanced#4014](https://github.com/Chr0matic1/revanced-patches/issues/4014)) ([c8eced5](c8eced5))
* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([ReVanced#4019](https://github.com/Chr0matic1/revanced-patches/issues/4019)) ([d89ad65](d89ad65))
* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([630633c](630633c))
* **YouTube - Spoof video streams:** Enable opus codec by updating iOS client version ([ReVanced#4063](https://github.com/Chr0matic1/revanced-patches/issues/4063)) ([0af156f](0af156f))
* **YouTube - Spoof video streams:** Fix playback for Android VR by removing invalid body as well ([ReVanced#3769](https://github.com/Chr0matic1/revanced-patches/issues/3769)) ([5150a15](5150a15))
* **YouTube - Spoof video streams:** Log out the iOS client to restore kids videos playback ([ReVanced#4000](https://github.com/Chr0matic1/revanced-patches/issues/4000)) ([cc2ac4e](cc2ac4e))
* **YouTube - Spoof video streams:** Update `Force AVC` client data ([ReVanced#4064](https://github.com/Chr0matic1/revanced-patches/issues/4064)) ([7d537dd](7d537dd))
* **YouTube - Spoof video streams:** Use system language as default iOS audio stream ([ReVanced#4042](https://github.com/Chr0matic1/revanced-patches/issues/4042)) ([4017185](4017185))
* **YouTube Music - GmsCore support:** Resolve patching errors ([ReVanced#4056](https://github.com/Chr0matic1/revanced-patches/issues/4056)) ([38a4bad](38a4bad))
* **YouTube Music - Hide category bar:** Add support for latest release ([ReVanced#3968](https://github.com/Chr0matic1/revanced-patches/issues/3968)) ([b63fdeb](b63fdeb))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([ReVanced#4073](https://github.com/Chr0matic1/revanced-patches/issues/4073)) ([fbc6ab6](fbc6ab6))
* **YouTube:** Merge `Restore old seekbar thumbnails` into `Seekbar thumbnails` ([ReVanced#3860](https://github.com/Chr0matic1/revanced-patches/issues/3860)) ([e377b1e](e377b1e))

### Build System

* Bump ReVanced Patcher ([eee1692](eee1692))

### Features

* **Backdrops - Pro unlock:** Support latest versions by removing version constraint ([a62b506](a62b506))
* **Facebook:** Add `Hide sponsored stories` patch ([ReVanced#3627](https://github.com/Chr0matic1/revanced-patches/issues/3627)) ([214c72b](214c72b))
* **Nyx:** Remove broken `Unlock pro` patch ([1fe8b16](1fe8b16))
* **Sync for Reddit:** Add `Fix video downloads` patch ([ReVanced#3739](https://github.com/Chr0matic1/revanced-patches/issues/3739)) ([a47ee38](a47ee38))
* **TikTok:** Add ReVanced settings about screen ([ReVanced#4009](https://github.com/Chr0matic1/revanced-patches/issues/4009)) ([12ea26b](12ea26b))
* **Twitter:** Add `Change link sharing domain` patch ([ReVanced#3753](https://github.com/Chr0matic1/revanced-patches/issues/3753)) ([9269a07](9269a07))
* **VSCO:** Remove non functional `Unlock pro` patch ([4fddb19](4fddb19))
* **Willhaben:** Add `Hide ads` patch ([ReVanced#3740](https://github.com/Chr0matic1/revanced-patches/issues/3740)) ([1fe3a52](1fe3a52))
* **YouTube - Hide layout components:** Add option to hide Yoodles (YouTube Doodles) ([ReVanced#3743](https://github.com/Chr0matic1/revanced-patches/issues/3743)) ([b8c8916](b8c8916))
* **YouTube - Hide layout components:** Hide player shopping shelf ([ReVanced#3804](https://github.com/Chr0matic1/revanced-patches/issues/3804)) ([1952f3b](1952f3b))
* **YouTube - Hide player flyout menu items:** Hide stable volume ([ReVanced#3827](https://github.com/Chr0matic1/revanced-patches/issues/3827)) ([b91e932](b91e932))
* **YouTube - Hide Shorts components:** Add option to hide `Use template`, `Upcoming`, `Green screen` buttons ([ReVanced#3752](https://github.com/Chr0matic1/revanced-patches/issues/3752)) ([f71c406](f71c406))
* **YouTube - Hide Shorts components:** Add option to hide like fountain ([ReVanced#3731](https://github.com/Chr0matic1/revanced-patches/issues/3731)) ([00a99dd](00a99dd))
* **YouTube - Hide Shorts components:** Hide `Hashtag` button ([ReVanced#3787](https://github.com/Chr0matic1/revanced-patches/issues/3787)) ([828a634](828a634))
* **YouTube - Miniplayer:** Add horizontal drag gesture ([ReVanced#3859](https://github.com/Chr0matic1/revanced-patches/issues/3859)) ([e32b19e](e32b19e))
* **YouTube - Miniplayer:** Add option to disable miniplayer ([ReVanced#3961](https://github.com/Chr0matic1/revanced-patches/issues/3961)) ([e565cdb](e565cdb))
* **YouTube - Player flyout menu:** Hide sleep timer ([ReVanced#3637](https://github.com/Chr0matic1/revanced-patches/issues/3637)) ([7e1bdab](7e1bdab))
* **YouTube - Spoof video streams:** Allow picking a default audio language track ([ReVanced#4050](https://github.com/Chr0matic1/revanced-patches/issues/4050)) ([ede666b](ede666b))
* **YouTube - Theme:** Apply custom seekbar color to splash screen animation ([ReVanced#3978](https://github.com/Chr0matic1/revanced-patches/issues/3978)) ([98d57e2](98d57e2))
* **YouTube Music:** Add `Spoof video streams` patch to fix playback ([ReVanced#4065](https://github.com/Chr0matic1/revanced-patches/issues/4065)) ([cf3116a](cf3116a))
* **YouTube:** Add `Open videos fullscreen` patch ([ReVanced#4069](https://github.com/Chr0matic1/revanced-patches/issues/4069)) ([296d63b](296d63b))
* **YouTube:** Add `Seekbar thumbnails` patch ([ReVanced#3813](https://github.com/Chr0matic1/revanced-patches/issues/3813)) ([5988b75](5988b75))
* **YouTube:** Add `Shorts autoplay` patch ([ReVanced#3794](https://github.com/Chr0matic1/revanced-patches/issues/3794)) ([96b5aed](96b5aed))
* **YouTube:** Hide player shopping shelf in playlists ([ReVanced#3806](https://github.com/Chr0matic1/revanced-patches/issues/3806)) ([a553a13](a553a13))
* **YouTube:** Merge multiple layout patches into `Hide Layout Components` ([ReVanced#3799](https://github.com/Chr0matic1/revanced-patches/issues/3799)) ([bbcb57a](bbcb57a))
* **YouTube:** Merge multiple player overlay patches into `Hide player overlay buttons` ([ReVanced#3800](https://github.com/Chr0matic1/revanced-patches/issues/3800)) ([4ba0300](4ba0300))
* **YouTube:** Support version `19.43.41` ([ReVanced#3854](https://github.com/Chr0matic1/revanced-patches/issues/3854)) ([85de5c7](85de5c7))
* **YouTube:** Support version `19.45.38` ([ReVanced#3938](https://github.com/Chr0matic1/revanced-patches/issues/3938)) ([7c4e3fe](7c4e3fe))
* **YouTube:** Support version `19.46.42` ([ReVanced#4010](https://github.com/Chr0matic1/revanced-patches/issues/4010)) ([122aac6](122aac6))
* **YouTube:** Support versions `19.25` and `19.34` ([ReVanced#3629](https://github.com/Chr0matic1/revanced-patches/issues/3629)) ([049e7f0](049e7f0))

### Performance Improvements

* Check for extension without a class proxy ([a6a74e2](a6a74e2))
* Move variables to local scope ([43c0421](43c0421))
* **YouTube - GmsCore support:** Improve performance by using hashsets ([2c5d390](2c5d390))

### BREAKING CHANGES

* Various APIs have been changed or removed.
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.

2 participants