Skip to content
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

Update Android Docker build image #68354

Merged
merged 2 commits into from
Jun 30, 2022
Merged

Conversation

akoeplinger
Copy link
Member

@akoeplinger akoeplinger commented Apr 21, 2022

Brings in new cmake 2.23.1 and Android NDK23c which fixes an issue with the binary size and perf of libmonosgen-2.0.so

In NDK23b they decided to no longer pass -O2 compiler optimization flag (for arm64, armv7 used -Oz) as part of the Android toolchain but delegate to upstream CMake behavior: https://github.com/android/ndk/wiki/Changelog-r23 and android/ndk#1536

CMake defaults to -O3 for Release builds but unfortunately this causes quite a noticable binary size increase and perf regression.

The Xamarin Android team measured startup time on an average of 10 runs of dotnet new maui on a Pixel 5:

-O3: 893.7ms
-O2: 600.2ms
-Oz: 649.1ms

We now explicitly pass in -O2 for Android builds.

Fixes #68330

@dotnet-issue-labeler
Copy link

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@akoeplinger
Copy link
Member Author

/azp run runtime-extra-platforms

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@akoeplinger
Copy link
Member Author

/azp run runtime-extra-platforms

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@akoeplinger akoeplinger added the NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) label Apr 22, 2022
@akoeplinger
Copy link
Member Author

This needs another change, so not ready just yet.

jonpryor pushed a commit to dotnet/android that referenced this pull request May 5, 2022
Context: dotnet/runtime#56989
Context: dotnet/runtime#68734
Context: dotnet/runtime#68914
Context: dotnet/runtime#68701

Changes: dotnet/installer@04e40fa...c7afae6

	% git diff --shortstat 04e40fa9...c7afae69
	 98 files changed, 1788 insertions(+), 1191 deletions(-)

Changes: dotnet/runtime@a21b9a2...c5d40c9

	% git diff --shortstat a21b9a2d...c5d40c9e
	 28347 files changed, 1609359 insertions(+), 1066473 deletions(-)

Changes: dotnet/linker@01c4f59...04c49c9

	% git diff --shortstat 01c4f590...04c49c9d
	 577 files changed, 28039 insertions(+), 10835 deletions(-)

Updates to build with the .NET 7 SDK and use the runtime specified by
the SDK.  We no longer use different SDK & runtime versions.

This produces a 7.0.100 Android workload.

After this is merged we should be able to enable Maestro to consume
future .NET 7 builds from dotnet/installer/main.

~~ Known Issues ~~

AOT+LLVM crashes on startup:

  * dotnet/runtime#68914

Xamarin.Build.Download hits a breaking change with `ZipEntry`:

  * dotnet/runtime#68734
  * xamarin/XamarinComponents#1368

illink outputs different MVIDs per architecture:

  * dotnet/linker#2203
  * dotnet/runtime#67660

Size of `libmonosgen-2.0.so` regressed:

  * dotnet/runtime#68330
  * dotnet/runtime#68354

Newer .NET 7 builds crash on startup:

  * dotnet/runtime#68701
  * This is worked around by *disabling* lazy loading of AOT'd
    assemblies 6dc426f.
  * TODO: re-enable once we get a fixed .NET 7 runtime.

TODO: We can't yet push to the `dotnet7` feed. Working on this.

Co-authored-by: Jonathan Peppers <[email protected]>
Co-authored-by: Peter Collins <[email protected]>
Brings in new cmake 2.23.1 and Android NDK 23c.

Set the optimization level to O2 to fix size/perf regression.

Fixes dotnet#68330
@akoeplinger akoeplinger removed the NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) label Jun 30, 2022
@akoeplinger akoeplinger merged commit 921029b into dotnet:main Jun 30, 2022
@akoeplinger akoeplinger deleted the android-image branch June 30, 2022 22:26
@ghost ghost locked as resolved and limited conversation to collaborators Jul 31, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
Status: Done & Blogged
Development

Successfully merging this pull request may close these issues.

Investigate size increase for Android libmonosgen-2.0.so between net6.0 and 7.0
2 participants