Skip to content
This repository was archived by the owner on Nov 6, 2024. It is now read-only.

Conversation

@moljac
Copy link
Contributor

@moljac moljac commented Apr 5, 2022

Does this change any of the generated binding API's?

No

Describe your contribution

Added trimmable support to build parameters

@moljac moljac requested a review from jpobst April 5, 2022 12:39
@moljac moljac merged commit ac74075 into main Apr 7, 2022
@moljac moljac deleted the net6-trimming-support branch April 7, 2022 09:30
jonathanpeppers added a commit to jonathanpeppers/xamarin-android that referenced this pull request Jan 10, 2024
To keep app sizes down in the .NET 6 timeframe, we special-cased
existing AndroidX and GPS packages so they were always trimmed.

Modern packages mark themselves trimmable with `$(IsTrimmable)` or the
assembly-level attribute.

For nearly 2 years, we've applied the appropriate trimming setting in
these packages:

* dotnet/android-libraries#520
* xamarin/GooglePlayServicesComponents#597

We should be able to remove this now in .NET 9.
jonathanpeppers added a commit to dotnet/android that referenced this pull request Jan 11, 2024
To keep app sizes down in the .NET 6 timeframe, we special-cased
existing AndroidX and GPS packages so they were always trimmed.

Modern packages mark themselves trimmable with `$(IsTrimmable)` or the
assembly-level attribute.

For nearly 2 years, we've applied the appropriate trimming setting in
these packages:

* dotnet/android-libraries#520
* xamarin/GooglePlayServicesComponents#597

We should be able to remove this now in .NET 9.

With this change in place, an existing app size regression test failed that was
using an old version of Xamarin.Forms (and AndroidX):

    Saving apk description to 'BuildReleaseArm64XFormsDotNet.apkdesc'
    Size difference in bytes ([*1] apk1 only, [*2] apk2 only):
    253,683 assemblies/Xamarin.AndroidX.Core.dll
    179,063 assemblies/Xamarin.Google.Android.Material.dll
    157,233 assemblies/Xamarin.AndroidX.AppCompat.dll
    104,239 assemblies/Xamarin.AndroidX.Media.dll *2
     52,862 assemblies/Xamarin.AndroidX.Annotation.dll *2
     48,743 assemblies/Xamarin.AndroidX.RecyclerView.dll
     39,419 assemblies/Xamarin.AndroidX.Transition.dll *2
     38,993 assemblies/Xamarin.AndroidX.Browser.dll *2

To avoid this increase: update the app size test from Xamarin.Forms 4.7.0.1142
to 5.0.0.2515.

This allowed us to no longer need the `%(TrimMode)=link` changes, however
updating Xamarin.Forms increased app size in other ways.

* New AndroidX libraries contain considerable more `AndroidResource`
and Java code.

* New AndroidX `.dll` files appeared for new packages.

* Luckily, it appears that no AndroidX `.dll` files grew in size, which is what
would be the result of the `%(TrimMode)=link` change if it were still needed.

Overall app size change in this test:

    --"PackageSize": 7941134
    ++"PackageSize": 9593384
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants