Fix unmangling of satellite assembly names #9533
Open
+9
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #9532
Context: 86260ed
All the assemblies are wrapped in a valid ELF shared library image and
placed in the
lib/{ABI}
directories inside the APK/AAB archive. Sincethose directories don't support subdirectories, we need to encode
satellite assembly culture in a way that doesn't use the
/
directoryseparator char. This encoding, as originally implemented, unfortunately
used the
-
character which made it ambiguous with culture names thatconsist of two parts (e.g.
de-DE
), since the unmangling process wouldlook for the first occurrence of
-
to replace it with/
, which wouldform invalid assembly names such as
de/DE-MyAssembly.resources.dll
instead of the correct
de-DE/MyAssembly.resources.dll
. This would,eventually, lead to a mismatch when looking for satellite assembly for
that specific culture.
Fix it by changing the
-
character to_
so that mangled assemblyname looks like
lib_de-DE_MyAssembly.resources.dll.so
and we canunambiguously decode it to the correct
de-DE/MyAssembly.resources.dll
name.