Skip to content

Update multiple packages to depend on versions with iOS privacy manifest included #6355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 11, 2024

Conversation

vbuberen
Copy link
Contributor

@vbuberen vbuberen commented Mar 19, 2024

Updated multiple packages pubspec.yaml to depend on iOS implementation versions that include privacy manifest required by Apple. I touched packages that were referenced in flutter/flutter#131940 issue.
The reason to do this change is that in a few projects I noticed that updating url_launcher dependency to the currently latest 6.2.5 doesn't also update url_launcher_ios to version with privacy manifest (appeared in 6.2.4) included in the plugin's pubspec.yaml it is declared as ^6.2.0, thus, version resolution picks 6.2.0 and that is it.

Considering that there is already a deadline of May 1, 2024 from Apple on when apps would have to include privacy manifests, it would be good to let devs already prepare their projects. This change should be especially useful for shared_preferences, which has NSPrivacyAccessedAPITypes array declared in its privacy manifest and which is already asked by Apple in emails after uploading new builds:

Screenshot 2024-03-19 at 12 36 47

Didn't update changelogs due to the fact that plugins stayed in almost the same versions range, where those minor changes to iOS part had no serious changed.

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@stuartmorgan-g
Copy link
Contributor

Normally we don't impose version constraints that aren't required by the code, but we have precendent for doing this when there's a store-level requirement that is imposed, so this seems reasonable.

in the plugin's pubspec.yaml it is declared as ^6.2.0, thus, version resolution picks 6.2.0 and that is it.

Version resolution will pick the newest version it can. The reason existing projects don't get updated versions of url_launcher_ios when just changing url_launcher's version manually is pubspec.lock, not that the resolver won't give newer versions.

it would be good to let devs already prepare their projects

Devs can already prepare their projects simply by running flutter pub upgrade. We can in practice speed the update process due to many people choosing for some reason to only update their direct dependencies rather than also updating their transitive dependencies, but developers could (and should) update transitive dependencies without any change by us.

Didn't update changelogs due to the fact that plugins stayed in almost the same versions range, where those minor changes to iOS part had no serious changed.

What is the purpose of changing the constraints without publishing that change?

@vbuberen
Copy link
Contributor Author

Version resolution will pick the newest version it can. The reason existing projects don't get updated versions of url_launcher_ios when just changing url_launcher's version manually is pubspec.lock, not that the resolver won't give newer versions.

Alright, got it. In such case I have a few projects with some limitations. And yes, it is manual change of version in pubspec.yaml + click on Get button in the IDE. I know quite a lot of people who do updates the same way, not just my direct colleagues, so this PR is something that would help ensure that such people also get updated versions resolved when next releases of touched plugins will be released.

Devs can already prepare their projects simply by running flutter pub upgrade.

I think you meant flutter pub upgrade [dependency name] as there are enough projects with a huge set of dependencies where it is not the best option to run an upgrade for everything instead of doing part by part for smaller set of changes.

What is the purpose of changing the constraints without publishing that change?

You misunderstood my message. The change needs publishing. The thing is that those versions of iOS part were compatible already before, so this bump doesn't change much and, thus, from my point of view is not something worth mentioning separately.

But in general it seems like changes from this PR are unwanted . You could just reject the PR with request for changes if you expect some or close it instead.

@stuartmorgan-g
Copy link
Contributor

Devs can already prepare their projects simply by running flutter pub upgrade.

I think you meant flutter pub upgrade [dependency name] as there are enough projects with a huge set of dependencies where it is not the best option to run an upgrade for everything instead of doing part by part for smaller set of changes.

In this case I do mean flutter pub upgrade. I expect most developers have multiple transitive dependencies that they will need to update to comply with the new App Store polices, and tracking down all of the relevant transitive dependencies one at a time by hand is likely to be pretty painful. Obviously it's their choice either way though.

But in general it seems like changes from this PR are unwanted

No, as I said we have precedent for doing this kind of change specifically in the case of app store requirements. I was just clarifying the context/reason we would accept it, since the PR description suggested that this change was required in order for clients to update, which isn't actually the case. I clarify this whenever anyone says it in any PR or issue, because it's a relatively common misconception, and my hope is that the more places it's corrected, the less widespread the misconception will be.

Copy link
Contributor

@stuartmorgan-g stuartmorgan-g left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These steps are required for the PR to land.

@vbuberen vbuberen requested a review from stuartmorgan-g March 20, 2024 15:10
@vbuberen vbuberen force-pushed the fix/privacy_manifests branch from 04a58f6 to 22797c1 Compare March 20, 2024 20:24
@@ -3,7 +3,7 @@ description: Flutter plugin for displaying inline video with other Flutter
widgets on Android, iOS, and web.
repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
version: 2.8.3
version: 2.8.4

environment:
sdk: ">=3.1.0 <4.0.0"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These two values need to be rev'd to fix this failure; the package currently fails resolution on 3.13.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that video_player_avfoundation has higher min Flutter + Dart, so updated constraints here, in video_player, to match.


* Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
* Updates support matrix in README to indicate that iOS 11 is no longer supported.
* Clients on versions of Flutter that still support iOS 11 can continue to use this
package with iOS 11, but will not receive any further updates to the iOS implementation.
* Bumps min version of iOS part to start with version with privacy manifest included.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm having trouble parsing this (I'm not sure what it means for the minimum version of something to start with something means). How about:

Updates minimum iOS implementation version to include a privacy manifest.

(This applies throughout the PR.)

@vbuberen
Copy link
Contributor Author

vbuberen commented Apr 2, 2024

@stuartmorgan Would you mind checking this PR again?

The failing integration test is something I can't tackle as locally this test passes Ok for me in my setup with Android emulators. I see that the reason for failing on CI is in some small time diff in position, which seems a bit odd: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8751747162297807793/+/u/Run_package_tests/drive_examples/stdout#L23859_0
I saw this issue flutter/flutter#141145 and the comment so assume that this test is expected to be flaky, even though previously there was a different issue with it?

Copy link
Contributor

@stuartmorgan-g stuartmorgan-g left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@stuartmorgan-g
Copy link
Contributor

@tarrinneal Could you do the secondary review here?

(This will need conflicts resolved, but that can wait until it has all the reviews so that it doesn't get re-conflicted.)

@vbuberen vbuberen force-pushed the fix/privacy_manifests branch from 9c5bcc7 to 17fcaa8 Compare April 9, 2024 17:10
@vbuberen
Copy link
Contributor Author

@stuartmorgan Looks like this one can be merged. Second approve is done and I have already updated the branch to resolve conflicts.

@stuartmorgan-g stuartmorgan-g added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 11, 2024
@auto-submit auto-submit bot merged commit a21a447 into flutter:main Apr 11, 2024
78 checks passed
@vbuberen vbuberen deleted the fix/privacy_manifests branch April 11, 2024 17:31
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 12, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Apr 12, 2024
flutter/packages@e98839a...78f684c

2024-04-12 [email protected] Roll Flutter from 557fbf5 to 53cba24 (11 revisions) (flutter/packages#6509)
2024-04-11 [email protected] [file_selector] Remove OCMock from iOS implementation (flutter/packages#6503)
2024-04-11 [email protected] Access current location using uri.path to support deep links (flutter/packages#6474)
2024-04-11 [email protected] Roll Flutter from 97cd47a to 557fbf5 (22 revisions) (flutter/packages#6502)
2024-04-11 [email protected] [packages] Set parallelizable to NO to reduce test flakiness in packages project tests (flutter/packages#6471)
2024-04-11 [email protected] Update multiple packages to depend on versions with iOS privacy manifest included (flutter/packages#6355)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
stuartmorgan-g added a commit to stuartmorgan-g/packages that referenced this pull request Apr 17, 2024
- Updates the README to indicate that iOS 12 and 13 are no longer
  supported.
- Updates the minimum version of the iOS implementation package to one
  with privacy manifest support. See related discussion in
  flutter#6355
auto-submit bot pushed a commit that referenced this pull request Apr 17, 2024
- Updates the README to indicate that iOS 12 and 13 are no longer supported.
- Updates the minimum version of the iOS implementation package to one with privacy manifest support. See related discussion in #6355
gilnobrega pushed a commit to gilnobrega/flutter that referenced this pull request Apr 22, 2024
flutter/packages@e98839a...78f684c

2024-04-12 [email protected] Roll Flutter from 557fbf5 to 53cba24 (11 revisions) (flutter/packages#6509)
2024-04-11 [email protected] [file_selector] Remove OCMock from iOS implementation (flutter/packages#6503)
2024-04-11 [email protected] Access current location using uri.path to support deep links (flutter/packages#6474)
2024-04-11 [email protected] Roll Flutter from 97cd47a to 557fbf5 (22 revisions) (flutter/packages#6502)
2024-04-11 [email protected] [packages] Set parallelizable to NO to reduce test flakiness in packages project tests (flutter/packages#6471)
2024-04-11 [email protected] Update multiple packages to depend on versions with iOS privacy manifest included (flutter/packages#6355)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
TecHaxter pushed a commit to TecHaxter/flutter_packages that referenced this pull request May 22, 2024
…est included (flutter#6355)

Updated multiple packages `pubspec.yaml` to depend on iOS implementation versions that include privacy manifest required by Apple. I touched packages that were referenced in flutter/flutter#131940 issue. 
The reason to do this change is that in a few projects I noticed that updating `url_launcher` dependency to the currently latest 6.2.5 doesn't also update `url_launcher_ios` to version with privacy manifest (appeared in 6.2.4) included in the plugin's `pubspec.yaml` it is declared as `^6.2.0`, thus, version resolution picks 6.2.0 and that is it.

Considering that there is already a deadline of May 1, 2024 from Apple on when apps would have to include privacy manifests, it would be good to let devs already prepare their projects. This change should be especially useful for `shared_preferences`, which has `NSPrivacyAccessedAPITypes` array declared in its privacy manifest and which is already asked by Apple in emails after uploading new builds:

<img width="681" alt="Screenshot 2024-03-19 at 12 36 47" src="https://github.com/flutter/packages/assets/13467769/c81e5a15-86d8-4270-aafe-845679fc901b">

Didn't update changelogs due to the fact that plugins stayed in almost the same versions range, where those minor changes to iOS part had no serious changed.
TecHaxter pushed a commit to TecHaxter/flutter_packages that referenced this pull request May 22, 2024
…tter#6552)

- Updates the README to indicate that iOS 12 and 13 are no longer supported.
- Updates the minimum version of the iOS implementation package to one with privacy manifest support. See related discussion in flutter#6355
arc-yong pushed a commit to Arctuition/packages-arc that referenced this pull request Jun 14, 2024
…est included (flutter#6355)

Updated multiple packages `pubspec.yaml` to depend on iOS implementation versions that include privacy manifest required by Apple. I touched packages that were referenced in flutter/flutter#131940 issue. 
The reason to do this change is that in a few projects I noticed that updating `url_launcher` dependency to the currently latest 6.2.5 doesn't also update `url_launcher_ios` to version with privacy manifest (appeared in 6.2.4) included in the plugin's `pubspec.yaml` it is declared as `^6.2.0`, thus, version resolution picks 6.2.0 and that is it.

Considering that there is already a deadline of May 1, 2024 from Apple on when apps would have to include privacy manifests, it would be good to let devs already prepare their projects. This change should be especially useful for `shared_preferences`, which has `NSPrivacyAccessedAPITypes` array declared in its privacy manifest and which is already asked by Apple in emails after uploading new builds:

<img width="681" alt="Screenshot 2024-03-19 at 12 36 47" src="https://github.com/flutter/packages/assets/13467769/c81e5a15-86d8-4270-aafe-845679fc901b">

Didn't update changelogs due to the fact that plugins stayed in almost the same versions range, where those minor changes to iOS part had no serious changed.
arc-yong pushed a commit to Arctuition/packages-arc that referenced this pull request Jun 14, 2024
…tter#6552)

- Updates the README to indicate that iOS 12 and 13 are no longer supported.
- Updates the minimum version of the iOS implementation package to one with privacy manifest support. See related discussion in flutter#6355
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants