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
Federate the Android and iOS implementations of 1P plugins #68498
Comments
Because they predate federation.
This is the plan of record. However, the work of transitioning existing plugin implementations has been low priority. Patches federating existing mobile implementations would be welcome, and it's something that will get cleaned up at some point. |
Does it work out? woodemi/quick_flutter.brick#22 (comment)
|
I'm not sure what you are asking. If it's "is it possible to implement what this issue describes", then yes. |
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks `path_provider` as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Now that the iOS and Android implementation packages are published, switch to them and re-enable publishing. Part of flutter/flutter#68498
Now that the iOS and Android implementation packages are published, switch to them and re-enable publishing. Part of flutter/flutter#68498
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks shared_preferences as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Restores the app-facing package to publishable state, pointing at the newly-published federated Android and iOS implementation packages. Part of Part of flutter/flutter#68498
Restores the app-facing package to publishable state, pointing at the newly-published federated Android and iOS implementation packages. Part of Part of flutter/flutter#68498
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks `url_launcher` as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Restores the app-facing package to a publishable state now that _android and _ios implementation packages are published. Part of flutter/flutter#68498
Restores the app-facing package to a publishable state now that _android and _ios implementation packages are published. Part of flutter/flutter#68498
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks `path_provider` as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Now that the iOS and Android implementation packages are published, switch to them and re-enable publishing. Part of flutter/flutter#68498
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks shared_preferences as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Moves the iOS and Android implementations to their own federated packages. The iOS implementation package uses the name `avfoundation` rather than `ios` since it is likely that a macOS implementation could share a significant amount of code. As part of the federation, migrates the mobile implementations to using in-package method channels rather than the shared method channel. Currently these are just duplicates of the existing method channels; updating them to new version of Pigeon will be done in a separate PR later. Temporarily marks `video_player` as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. No version change: The changes to `video_player_platform_interface` only affect development of the plugin, not use of the plugin. Part of flutter/flutter#68498 Part of flutter/flutter#94224
Publishes the change from in-package Android and iOS implementations to federated implementations. Part of flutter/flutter#68498
Publishes the change from in-package Android and iOS implementations to federated implementations. Part of flutter/flutter#68498
Fully federates the plugin by moving the existing mobile implementations to their own packages, per planned repo structure. Temporarily marks `url_launcher` as unpublishable to allow the implementations to be moved, rather than copied and deleted, in order to better preserve git history. A follow-up PR will restore it to publishable form. Part of flutter/flutter#68498
Restores the app-facing package to a publishable state now that _android and _ios implementation packages are published. Part of flutter/flutter#68498
Note: |
Restores the app-facing package to a publishable state, switch to the newly published federated mobile versions. Part of flutter/flutter#68498
Re-enables publishing of `camera` now that the mobile federated implementation packages have been published. Part of flutter/flutter#68498
Restored the app-facing package to publishable state, using the newly-published federated mobile implementations. Part of flutter/flutter#68498
Restored the app-facing package to publishable state, using the newly-published federated mobile implementations. Part of flutter/flutter#68498
Restored the app-facing package to publishable state, using the newly-published federated mobile implementations. Part of flutter/flutter#68498
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of |
Use case
From the flutter docs: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#federated-plugins
This seems at odds with the official plugins not having the Android and iOS implementations in separate projects.
Looking at
shared_preferences
as an example: https://github.com/flutter/plugins/tree/master/packages/shared_preferencesWhy are web and desktop in separate packages but Android and iOS are not? If we want to swap the implementation of Android or iOS, the default implementation is still present. Why are they special?
Proposal
Treat all platforms the same, 1 package per platform.
Here is an example of what I am calling "fully federated", where there is no platform implementations in the app facing package: https://github.com/MisterJimson/federated_plugins_example/tree/fully-federated
The text was updated successfully, but these errors were encountered: