Skip to content

Conversation

@grendello
Copy link
Contributor

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 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`
Copy link

Copilot AI left a 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.so across 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

grendello and others added 2 commits December 10, 2025 09:34
…or.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Member

@jonathanpeppers jonathanpeppers left a comment

Choose a reason for hiding this comment

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

We can ignore the one test failure:

Image

@jonathanpeppers jonathanpeppers merged commit 740256f into main Dec 10, 2025
56 of 59 checks passed
@jonathanpeppers jonathanpeppers deleted the dev/grendel/assembly-stores-name branch December 10, 2025 21:55
jonathanpeppers pushed a commit that referenced this pull request Dec 10, 2025
…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`
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.

[.NET 10] Regression - Apps built with .NET 10 are detected as "Non-64bit Compliant" on Amazon AppStore.

3 participants