Skip to content

Fix conflicting resources merging order #273

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

oliviernotteghem
Copy link

Fixes #272

Use flag to restore legacy behavior, if needed.

pswaminathan added a commit to pswaminathan/rules_android that referenced this pull request Mar 14, 2025
That PR includes a flag to use the original behavior, which we don't
care about.

From [the originating issue](bazelbuild#272):

> Our large project include duplicated android resources. We recently
> hit a bug when our developers introduced a dependency to a new third
> party library, which contains an android resource with the same name
> as one used in our top-level target. This is due to the fact the old
> APPT1 behavior is currently preserved, and the defined resources in
> the list provided to Aapt2ResourcePackagingAction 'wins'.
> The expectation is that the closest value defined from the app wins.
>
> The project below exemplify this (bogus) behavior: app defines
> resource app_name and app_name2 (with same value), depends directly
(or transitively) on library lib, which defines also app_name.
> In the final APK, app_name has the value from lib.
>
> This is problematic for projects tolerating duplicated resource, as,
> even with warnings, breaks can easily be introduced as any code change
> or third party library bump could possibly overwrite the value defined
> in top level target.
>
> The workaround we're using is to reverse the input order in Aapt2ResourcePackagingAction.
pswaminathan added a commit to pswaminathan/rules_android that referenced this pull request Mar 17, 2025
That PR includes a flag to use the original behavior, which we don't
care about.

From [the originating issue](bazelbuild#272):

> Our large project include duplicated android resources. We recently
> hit a bug when our developers introduced a dependency to a new third
> party library, which contains an android resource with the same name
> as one used in our top-level target. This is due to the fact the old
> APPT1 behavior is currently preserved, and the defined resources in
> the list provided to Aapt2ResourcePackagingAction 'wins'.
> The expectation is that the closest value defined from the app wins.
>
> The project below exemplify this (bogus) behavior: app defines
> resource app_name and app_name2 (with same value), depends directly
(or transitively) on library lib, which defines also app_name.
> In the final APK, app_name has the value from lib.
>
> This is problematic for projects tolerating duplicated resource, as,
> even with warnings, breaks can easily be introduced as any code change
> or third party library bump could possibly overwrite the value defined
> in top level target.
>
> The workaround we're using is to reverse the input order in Aapt2ResourcePackagingAction.
pswaminathan added a commit to pswaminathan/rules_android that referenced this pull request Mar 27, 2025
That PR includes a flag to use the original behavior, which we don't
care about.

From [the originating issue](bazelbuild#272):

> Our large project include duplicated android resources. We recently
> hit a bug when our developers introduced a dependency to a new third
> party library, which contains an android resource with the same name
> as one used in our top-level target. This is due to the fact the old
> APPT1 behavior is currently preserved, and the defined resources in
> the list provided to Aapt2ResourcePackagingAction 'wins'.
> The expectation is that the closest value defined from the app wins.
>
> The project below exemplify this (bogus) behavior: app defines
> resource app_name and app_name2 (with same value), depends directly
(or transitively) on library lib, which defines also app_name.
> In the final APK, app_name has the value from lib.
>
> This is problematic for projects tolerating duplicated resource, as,
> even with warnings, breaks can easily be introduced as any code change
> or third party library bump could possibly overwrite the value defined
> in top level target.
>
> The workaround we're using is to reverse the input order in Aapt2ResourcePackagingAction.
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.

Incorrect resource merging logic when handling conflicts
1 participant