-
Notifications
You must be signed in to change notification settings - Fork 564
Rename assembly stores in the APK/AAB archive to libassembly-store.so
#10638
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
Conversation
Fixes: #10634 Amazon application store appears to verify the uploaded archives by, among other steps, comparing names of libraries packaged into per-ABI `lib/` directories. If it finds library names that don't correspond to entries in any of the other `lib/{ABI}` directories, it decides that the application is incorrectly constructed and rejects the upload. In our case the check failed because of names of the assembly store files in the archive which are named `libassemblies.{ABI}.blob.so` and, thus, would have unique entries in every `lib/{ABI}/` directory. This is an artifact from the time where all stores were placed in a single directory (`assemblies/`) and had to have distinct names in order for that to work. The Amazon store check, in this regard, is just an unnecessary obstacle (since there's no reason, technical or otherwise, for different ABIs to have identical sets of libraries), but since a we have no way to fix it other than to comply with the Amazon store requirements and, this PR renames assembly store files to have a uniform name across all the ABIs present in the application: `libassembly-store.so`
08dad03 to
11d2440
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR renames assembly store files from libassemblies.{ABI}.blob.so to a uniform libassembly-store.so across all ABIs to comply with Amazon App Store requirements. Amazon's validation rejects archives where library names in lib/{ABI}/ directories don't match across different ABIs, which was the case with the old ABI-specific naming scheme.
Key changes:
- Unified assembly store filename to
libassembly-store.soacross all ABIs - Updated C# build tasks and tools to generate and read the new filename
- Updated C++ native code constants to use the new filename
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs | Updated to generate assembly stores with new uniform name (contains path construction bug) |
| tools/assembly-store-reader-mk2/AssemblyStore/StoreReader_V2.cs | Updated to read assembly stores with new uniform name |
| tools/assembly-store-reader-mk2/Main.cs | Updated help text to reflect new naming convention (contains documentation error) |
| src/native/mono/monodroid/embedded-assemblies.hh | Updated constant definitions to use new uniform filename |
| src/native/clr/include/constants.hh | Updated constant definitions to use new uniform filename |
| src/Xamarin.Android.Build.Tasks/Tasks/CreateAssemblyStore.cs | Updated documentation comment to be more generic |
| src/Xamarin.Android.Build.Tasks/Tasks/CollectRuntimeConfigFilesForArchive.cs | Updated comment to reference new filename |
| Documentation/project-docs/ApkSharedLibraries.md | Updated examples to use new filename |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.CoreCLR.apkdesc | Updated test baseline for new filename |
| src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.CoreCLR.apkdesc | Updated test baseline for new filename |
src/Xamarin.Android.Build.Tasks/Utilities/AssemblyStoreGenerator.cs
Outdated
Show resolved
Hide resolved
…or.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
jonathanpeppers
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…o` (#10638) Fixes: #10634 Amazon application store appears to verify the uploaded archives by, among other steps, comparing names of libraries packaged into per-ABI `lib/` directories. If it finds library names that don't correspond to entries in any of the other `lib/{ABI}` directories, it decides that the application is incorrectly constructed and rejects the upload. In our case the check failed because of names of the assembly store files in the archive which are named `libassemblies.{ABI}.blob.so` and, thus, would have unique entries in every `lib/{ABI}/` directory. This is an artifact from the time where all stores were placed in a single directory (`assemblies/`) and had to have distinct names in order for that to work. The Amazon store check, in this regard, is just an unnecessary obstacle (since there's no reason, technical or otherwise, for different ABIs to have identical sets of libraries), but since a we have no way to fix it other than to comply with the Amazon store requirements and, this PR renames assembly store files to have a uniform name across all the ABIs present in the application: `libassembly-store.so`

Fixes: #10634
Amazon application store appears to verify the uploaded archives by, among other steps, comparing names of libraries packaged into per-ABI
lib/directories. If it finds library names that don't correspond to entries in any of the otherlib/{ABI}directories, it decides that the application is incorrectly constructed and rejects the upload.In our case the check failed because of names of the assembly store files in the archive which are named
libassemblies.{ABI}.blob.soand, thus, would have unique entries in everylib/{ABI}/directory. This is an artifact from the time where all stores were placed in a single directory (assemblies/) and had to have distinct names in order for that to work.The Amazon store check, in this regard, is just an unnecessary obstacle (since there's no reason, technical or otherwise, for different ABIs to have identical sets of libraries), but since a we have no way to fix it other than to comply with the Amazon store requirements and, this PR renames assembly store files to have a uniform name across all the ABIs present in the application:
libassembly-store.so