Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 2, 2025

  • Understand the issue: Remove all usage of deprecated [Android.Runtime.Preserve] attribute
  • Identify all occurrences (found 9 uses in /source/com.google.android.gms/play-services-tasks/Additions/Task.cs)
  • Remove [Android.Runtime.Preserve] attributes from the Task.cs file
  • Fix build error: Re-add using Android.Runtime; namespace (needed for IJavaObject type)
  • Verify no more Preserve attributes exist in the codebase
  • Request code review (passed with no comments)
  • Run security checks (CodeQL - no issues detected)
  • Address build failure feedback
  • Finalize changes

Summary

All instances of the deprecated [Android.Runtime.Preserve] attribute have been successfully removed from the codebase. The using Android.Runtime; namespace was re-added as it's required for the IJavaObject type used in generic type constraints.

Changes Made

  • File Modified: source/com.google.android.gms/play-services-tasks/Additions/Task.cs
    • Removed 9 [Android.Runtime.Preserve] attributes
    • Kept using Android.Runtime; directive (required for IJavaObject type)

Validation

  • ✅ Code review: No issues found
  • ✅ Security scan (CodeQL): No vulnerabilities detected
  • ✅ No remaining instances of deprecated attribute in codebase
  • ✅ Build error fixed by restoring required namespace
Original prompt

This section details on the original issue you should resolve

<issue_title>[Android.Runtime.Preserve] is deprecated</issue_title>
<issue_description>### Android framework version

net9.0-android

Affected platform version

.NET 9

Description

[Android.Runtime.Preserve] has been deprecated for a while, and will do nothing in .NET 11.

Remove all usage of it.</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
Copilot AI changed the title [WIP] Remove usage of deprecated [Android.Runtime.Preserve] Remove deprecated [Android.Runtime.Preserve] attribute Dec 2, 2025
Copilot AI requested a review from jonathanpeppers December 2, 2025 20:56
Copilot finished work on behalf of jonathanpeppers December 2, 2025 20:56
@rmarinho
Copy link
Member

rmarinho commented Dec 3, 2025

@copilot I think you might need to keep the namespace

build is failing

D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(12,253): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net9.0-android35.0]
D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(32,240): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net9.0-android35.0]
D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(51,249): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net9.0-android35.0]
D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(12,253): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net10.0-android36.0]
D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(32,240): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net10.0-android36.0]
D:\a\_work\1\s\source\com.google.android.gms\play-services-tasks\Additions\Task.cs(51,249): error CS0246: The type or namespace name 'IJavaObject' could not be found (are you missing a using directive or an assembly reference?) [D:\a\_work\1\s\generated\com.google.android.gms.play-services-tasks\com.google.android.gms.play-services-tasks.csproj::TargetFramework=net10.0-android36.0]
    218 Warning(s)
    6 Error(s)

Co-authored-by: rmarinho <1235097+rmarinho@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Dec 3, 2025

@copilot I think you might need to keep the namespace

build is failing
...

You're correct! I've restored the using Android.Runtime; namespace as it's needed for the IJavaObject type used in the generic constraints. The [Android.Runtime.Preserve] attributes remain removed as intended. Fixed in ecfaf60.

Copilot AI requested a review from rmarinho December 3, 2025 12:59
Copilot finished work on behalf of rmarinho December 3, 2025 12:59
@rmarinho rmarinho marked this pull request as ready for review December 3, 2025 17:48
@jonathanpeppers jonathanpeppers merged commit 9313453 into main Dec 3, 2025
2 checks passed
@jonathanpeppers jonathanpeppers deleted the copilot/remove-deprecated-preserve-usage branch December 3, 2025 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Android.Runtime.Preserve] is deprecated

3 participants