Skip to content

Building with a macOS plugin: "Plugin url_launcher_linux doesn't implement a plugin interface" #76396

Closed

Description

@jmagman

On top of #74469 I see confusing output when I build for a macOS app

Plugin `url_launcher_linux` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.

To set a default implementation, use:
flutter:
  plugin:
    platforms:
      linux:
        default_package: <plugin-implementation>

To implement an interface, use:
flutter:
  plugin:
    implements: <plugin-interface>

Plugin `url_launcher_macos` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.

To set a default implementation, use:
flutter:
  plugin:
    platforms:
      macos:
        default_package: <plugin-implementation>

To implement an interface, use:
flutter:
  plugin:
    implements: <plugin-interface>

Plugin `url_launcher_windows` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
To set a default implementation, use:
flutter:
  plugin:
    platforms:
      windows:
        default_package: <plugin-implementation>

To implement an interface, use:

flutter:
  plugin:
    implements: <plugin-interface>

Steps to Reproduce

  1. flutter create --platforms=macos test_macos_plugin
  2. Add url_launcher: to pubspec.yaml
  3. Run in Xcode or flutter run -v

Activity

  1. added
    toolAffects the "flutter" command-line tool. See also t: labels.
    platform-macosBuilding on or for macOS specifically
    on Feb 19, 2021
  2. jmagman commented on Feb 19, 2021

    @jmagman
    MemberAuthor
  3. blasten commented on Feb 19, 2021

    @blasten

    I was unable to reproduce it. what version did it resolve to (from .packages)?

  4. blasten commented on Feb 19, 2021

    @blasten

    Actually, I had modified the pub cache in order to test the changes. This is the intended behavior, and I will submit a fix to the offending plugins.

  5. CodinMoldovanu commented on Feb 21, 2021

    @CodinMoldovanu

    @jmagman What Flutter version are you using? I was encountering this while using the master branch of the Flutter repo, switched to stable and everything is behaving nicely.

  6. narumi147 commented on Feb 21, 2021

    @narumi147

    This should be warnings for plugin which not implements all platforms, should not shown when building application?

    Plugin `audioplayers` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `connectivity_plus_linux` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `connectivity_plus_macos` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `connectivity_plus_windows` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `file_chooser` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `file_chooser` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `file_chooser` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `flutter_audio_desktop` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `flutter_audio_desktop` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `flutter_qjs` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `flutter_qjs` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `flutter_qjs` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `package_info` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `path_provider_linux` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `path_provider_macos` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `path_provider_windows` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `shared_preferences_linux` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `shared_preferences_macos` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `shared_preferences_windows` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `sqflite` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `url_launcher_linux` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          linux:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `url_launcher_macos` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          macos:                                                            
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>                                      
                                                                            
    Plugin `url_launcher_windows` doesn't implement a plugin interface, nor sets a default implementation in pubspec.yaml.
                                                                            
    To set a default implementation, use:                                   
    flutter:                                                                
      plugin:                                                               
        platforms:                                                          
          windows:                                                          
            default_package: <plugin-implementation>                        
                                                                            
    To implement an interface, use:                                         
    flutter:                                                                
      plugin:                                                               
        implements: <plugin-interface>   
    
  7. jmagman commented on Feb 22, 2021

    @jmagman
    MemberAuthor

    @jmagman What Flutter version are you using? I was encountering this while using the master branch of the Flutter repo, switched to stable and everything is behaving nicely.

    I was on #74469 which is master.

    @blasten Upping the priority of this. Instead of just fixing the offending plugins, can we suppress this warning in tooling when building an app? The plugin consumer can't do anything about this warning and it looks scary.

  8. added
    P1High-priority issues at the top of the work list
    on Feb 22, 2021
  9. blasten commented on Feb 22, 2021

    @blasten

    Yes. I was going to disable the warnings for the time being.

  10. Mhamza-MM commented on Feb 23, 2021

    @Mhamza-MM
  11. Mhamza-MM commented on Feb 23, 2021

    @Mhamza-MM
  12. jmagman commented on Feb 23, 2021

    @jmagman
    Author
  13. blasten commented on Feb 23, 2021

    @blasten

    This was fixed in #76561

  14. github-actions commented on Aug 5, 2021

    @github-actions

    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 flutter doctor -v and a minimal reproduction of the issue.

  15. locked as resolved and limited conversation to collaborators on Aug 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work lista: desktopRunning on desktopplatform-macosBuilding on or for macOS specificallytoolAffects the "flutter" command-line tool. See also t: labels.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions