Skip to content

[TrimmableTypeMap] Add GetStaticMethodFallbackTypesCore override for desugared default interface methods #11045

Description

@simonrozsival

Part of #10788

Problem

TrimmableTypeMapTypeManager does not override GetStaticMethodFallbackTypesCore(). The legacy ManagedTypeManager overrides this to support Java 8+ default interface methods that are desugared by D8/R8:

// ManagedTypeManager.cs:155-166protectedoverrideIReadOnlyList<string>?GetStaticMethodFallbackTypesCore(stringjniSimpleReference){intslash=jniSimpleReference.LastIndexOf('/');vardesugarType=slash>0?$"{jniSimpleReference.Substring(0,slash+1)}Desugar{jniSimpleReference.Substring(slash+1)}":$"Desugar{jniSimpleReference}";returnnew[]{$"{desugarType}$_CC",$"{jniSimpleReference}$-CC",};}

Without this, calls to desugared default interface methods will fail with NoSuchMethodError at runtime when using the trimmable type map.

Fix

Add the same override to TrimmableTypeMapTypeManager. This is a 1-line method copy.

Impact

Any app using Java libraries with default interface methods (Java 8+ feature, very common in modern Android libraries like AndroidX) could be affected.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

copilot`copilot-cli` or other AIs were used to author thistrimmable-type-map

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions