Skip to content

Conversation

@jpobst
Copy link
Contributor

@jpobst jpobst commented Feb 20, 2025

Context: https://developer.android.com/about/versions/16
Context: https://android-developers.googleblog.com/2025/02/second-beta-android16.html

Android 16 Beta 2 has been released. The Android 16
Developer Preview Program Overview Timeline and updates section
suggests the following timeline:

  • Nov/Dec: Developer Previews
  • Jan/Feb: Unstable Betas
  • Mar/Apr: Stable Betas
  • ???: Final

Currently, this will be usable in its preview form to main users who explicitly target net10.0-android36. Once we are shipping .NET 10 previews, it will be usable for users who explicitly target net10.0-android36. We will need to decide on our strategy for backporting this to .NET 9 service releases.

Additional note(s):

  • We cannot generate an updated PublicAPI.Unshipped.txt because this is done in VS and current VS versions cannot load net10 projects. We have temporarily disabled PublicAPI verification for unstable API levels until this is resolved.

@jpobst jpobst marked this pull request as ready for review February 20, 2025 17:43
@jonpryor jonpryor merged commit 27feb80 into main Feb 20, 2025
58 checks passed
@jonpryor jonpryor deleted the dev/jpobst/android-16-beta2 branch February 20, 2025 18:30
grendello pushed a commit that referenced this pull request Feb 21, 2025
Context: https://developer.android.com/about/versions/16
Context: https://android-developers.googleblog.com/2025/01/first-beta-android16.html

Android 16 Beta 2 has been released.

  * [API-Baklava Beta 2 vs. API-35][0]
  * [API-Baklava Beta 2 vs. Beta 1][1]

The Android 16 Preview Program Overview [Timeline and updates][2]
section suggests the following timeline:

  * Nov/Dec: Developer Previews
  * Jan/Feb: Unstable Betas
  * Mar/Apr: Stable Betas
  * ???: Final

Currently, this will be usable in its preview form to `main` users
who explicitly target `net10.0-android36`.  Once we are shipping
.NET 10 previews, it will be usable for users who explicitly target
`net10.0-android36`.

We still need to decide on our strategy for backporting this to
.NET 9 service releases.

Additional note(s):

  - We cannot generate an updated `PublicAPI.Unshipped.txt` because
    this is done within VS and current VS versions cannot load
    `net10.0` projects.

    We have temporarily disabled PublicAPI verification for unstable
    API levels until this is resolved.

[0]: https://developer.android.com/sdk/api_diff/b-beta2/changes
[1]: https://developer.android.com/sdk/api_diff/b-beta2-incr/changes
[2]: https://developer.android.com/about/versions/16/overview
jonpryor pushed a commit that referenced this pull request Mar 19, 2025
Context: https://developer.android.com/about/versions/16
Context: https://android-developers.googleblog.com/2025/03/the-third-beta-of-android-16.html

Android 16 Beta 3 has been released.

  * [API-36 Beta 3 vs. API-35][0]
  * [API-36 Beta 3 vs. API-Baklava Beta 2][1]

The Android 16 Preview Program Overview [Timeline and updates][2]
section suggests the following timeline:

  * Nov/Dec: Developer Previews
  * Jan/Feb: Unstable Betas
  * Mar/Apr: Stable Betas
  * ???: Final

Additionally, enumify and mark API-36 as "stable", which changes
`net10.0-android` to default to `net10.0-android36.0`.

We still need to decide on our strategy for backporting this to
.NET 9 service releases.

## Notes

APICompat:

  - There are several `Android.Runtime.RequiresPermissionAttribute`
    fields that have been removed.  As we do not consume this
    attribute, it does not cause any API breakage.

  - Several `[ObsoletedOSPlatformAttribute]` attributes are missing.
    These have all been documented as "undeprecated" in Android's
    change list: https://developer.android.com/sdk/api_diff/36/changes

PublicAPI:

  - Nullable reference type attribute changes (`T?` -> `T!`)

  - Method parameter name changes.  This is technically a source
    breaking change, but something we've never tracked or fixed before.

  - Some consts changed "values" in `PublicAPI*.txt` like from
    `MediaCodecProfileType.Av1profilemain10hdr10` to
    `MediaCodecProfileType.Apvprofile42210hdr10`:

        - const Android.Media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain10HDR10 = Android.Media.MediaCodecProfileType.Av1profilemain10hdr10 -> Android.Media.MediaCodecProfileType
        + const Android.Media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain10HDR10 = Android.Media.MediaCodecProfileType.Apvprofile42210hdr10 -> Android.Media.MediaCodecProfileType

    This is a weird enum that has lots of members with the same values,
    and the PublicAPI tooling likely chooses the first alphabetically.
    The const *value* did not actually change, just the way it is
    listed in `PublicAPI*.txt`:

        public enum Android.Media.MediaCodecProfileType {
          [global::System.Runtime.Versioning.SupportedOSPlatformAttribute ("android36.0")]
          Apvprofile42210hdr10 = 4096,
        
          [global::System.Runtime.Versioning.SupportedOSPlatformAttribute ("android29.0")]
          Av1profilemain10hdr10 = 4096,
          // …
        }

MAUI Integration Tests:

  - It looks like the MAUI Integration tests are broken because they
    [explicitly target net10.0-android35.0][3] instead of
    `net10.0-android`.

    The MAUI team will need to update this when our changes
    flow to them.

[0]: https://developer.android.com/sdk/api_diff/36/changes
[1]: https://developer.android.com/sdk/api_diff/36-incr/changes
[2]: https://developer.android.com/about/versions/16/overview
[3]: https://github.com/dotnet/maui/blob/c451130571777aef5d9fa2737789dd987430e6dc/Directory.Build.props#L158
@github-actions github-actions bot locked and limited conversation to collaborators Mar 23, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants