Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

.NET 11 makes CoreCLR the default runtime for .NET MAUI Android apps, but that does not automatically satisfy Google Play’s DEX optimization threshold. CoreCLR and ReadyToRun concern .NET runtime and managed-code execution; Google’s DEX metric concerns DEX content in the uploaded Android App Bundle. Check the bundle and Play Console result for your app rather than inferring its score from the runtime choice.

What changes for .NET MAUI Android apps in .NET 11?

Microsoft’s .NET 11 release-stage documentation says MAUI Android uses CoreCLR by default. NativeAOT remains an opt-in publishing alternative and is described as experimental on Android. The documented defaults also differ by build configuration:

Build configuration Documented runtime or compilation behavior
Release CoreCLR by default; composite partial ReadyToRun is enabled by default.
Debug CoreCLR by default; ReadyToRun is not enabled by default.
NativeAOT publishing Opt-in alternative; experimental on Android.

These are the defaults described in release-stage documentation, and .NET workload defaults can change as the release evolves. Verify the behavior of the SDK and workload used to build your app.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why CoreCLR and DEX optimization are different

CoreCLR is the .NET runtime. ReadyToRun is a managed-code compilation strategy used with that runtime. Google’s DEX guidance describes DEX as compiled Android application code, typically Java and Kotlin, and distinguishes it from compiled C++ code and native .so libraries. Microsoft’s Android package description lists classes.dex separately from CoreCLR, JIT and runtime libraries, and managed assemblies or ReadyToRun images.

That package distinction is why changing the .NET runtime setting is not, by itself, evidence that a Google DEX percentage will improve or decline. The available official documentation does not establish a universal mapping between every MAUI project configuration and Google’s scored percentage. A MAUI app’s generated DEX content and Java/Kotlin dependencies must be assessed in the artifact that is actually uploaded.

Who is eligible for a DEX optimization finding?

Google reports optimization metrics for apps and games, but its Android vitals guidance says it issues findings only when the bundle meets the relevant uncompressed DEX size minimum. The documented minimum optimization threshold is 25% across optimization, shrinking and obfuscation.

Google Play category Minimum uncompressed DEX size for findings Documented optimization threshold
Apps At least 10 MB 25% across optimization, shrinking and obfuscation
Games At least 50 MB 25% across optimization, shrinking and obfuscation

The size minimum determines whether Google issues a finding; it is not the optimization percentage. If your app is below the relevant size, the absence of a finding does not establish that it would meet the percentage threshold if assessed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What happens if an app misses the threshold?

In an announcement dated 26 August 2026, Google said the new performance thresholds, including DEX optimization, are scheduled to begin applying in February 2027. Google says apps that miss relevant thresholds may see reduced visibility and publishing capabilities on Google Play. “May” matters: the announcement describes possible consequences, not an automatic penalty in every case.

How to check the bundle you upload

Run the checks against the Android App Bundle built for release. Google’s documented command sums the uncompressed sizes of entries whose names end in .dex:

unzip -l <yourapp>.aab | grep -E '.dex$' | awk '{sum+=$1} END {print sum}'

The output is the summed size in the units reported by unzip -l. Compare it with the app or game eligibility minimum, not with the 25% optimization threshold; the command measures size, not optimization percentage.

Inspect R8 metadata when it is present

For bundles built with Android Gradle Plugin (AGP) 8.10 or higher, Google’s guidance points to the R8 metadata file at BUNDLE-METADATA/com.android.tools.r8.json. Extract it with:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools.r8.json

If the metadata is absent, Google describes using mapping.txt or DEX heuristics. Compare the evidence with the evaluated status in Android vitals or Play Console. The R8 Configuration Analyzer reports a pre-optimization keep-rule score, which can differ from the post-optimization result represented in r8.json; do not treat the analyzer’s score as the final Play Console result.

Use the result to focus the investigation

  • If the bundle is below the category’s size minimum, the documented size condition for a finding is not met.
  • If the app is eligible but below the percentage threshold, inspect broad keep rules and the packages that remain large. Follow the optimization guidance for the optimizer and build system in use.
  • For a MAUI app, identify which generated DEX entries and Java/Kotlin dependencies contribute to the uploaded bundle before changing project settings.

Google’s guidance covers R8 and other approaches, including ProGuard-compatible optimizers and secondary DEX post-processors. There is no documented universal MAUI setting that fixes every low score.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What ReadyToRun can change—and what its measurements do not prove

ReadyToRun is relevant to managed-code execution and app packaging, not a substitute for measuring DEX optimization. Microsoft’s .NET 11 RC 1 release notes report that partial ReadyToRun improved startup by 2.4% in the basic template and 4.5% in the sample-content template, while increasing package size by 65,536 bytes and 266,240 bytes, respectively. Those are results for the named sample templates and documented conditions, not guarantees for another app.

The same RC 1 notes report build-time changes for one Release CoreCLR MAUI sample: a managed source change went from 68.32 seconds to 52.31 seconds, and a manifest change from 39.74 seconds to 10.97 seconds. Clean-build type-map generation went from 3,204 milliseconds to 792 milliseconds. These sample-specific build measurements do not establish a DEX optimization result, nor do they predict your app’s startup or package-size change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.