-
Notifications
You must be signed in to change notification settings - Fork 566
Labels
copilot`copilot-cli` or other AIs were used to author this`copilot-cli` or other AIs were used to author thistrimmable-type-map
Milestone
Description
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-166
protected override IReadOnlyList<string>? GetStaticMethodFallbackTypesCore(string jniSimpleReference)
{
int slash = jniSimpleReference.LastIndexOf('/');
var desugarType = slash > 0
? $"{jniSimpleReference.Substring(0, slash + 1)}Desugar{jniSimpleReference.Substring(slash + 1)}"
: $"Desugar{jniSimpleReference}";
return new[] {
$"{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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
copilot`copilot-cli` or other AIs were used to author this`copilot-cli` or other AIs were used to author thistrimmable-type-map