MissingPluginException(在通道 plugins.flutter.io/google_sign_in 上找不到方法 init 的实现)

Posted

技术标签:

【中文标题】MissingPluginException(在通道 plugins.flutter.io/google_sign_in 上找不到方法 init 的实现)【英文标题】:MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in) 【发布时间】:2018-06-29 19:31:54 【问题描述】:

使用 Flutter 的 google 登录

但是当我使用此语句登录用户时看到以下消息

_googleSignIn.signIn();

E/flutter (6491): MissingPluginException(没有找到实现 通道 plugins.flutter.io/google_sign_in 上的方法 init)

我验证了以下步骤:

GoogleSignInPlugin.registerWith(registry.registrarFor("io.flutter.plugins.googlesignin.GoogleSignInPlugin")); // is present

GeneratedPluginRegistrant.registerWith(this); // in MainActivity.Java

用户是否经常报告此错误。不知道如何进行。我正在做大多数文档所说的,但它不起作用。

我看到的其他奇怪行为是,我第一次运行 flutter run 它卡在 await googleSignIn.SignIn() 上。

只有在我进行热重载(通过输入“r”)后,我才会看到上述错误消息:

E/flutter (12326): MissingPluginException(没有找到实现 通道 plugins.flutter.io/google_sign_in 上的方法 init)

问题:是否有任何替代方法可以对 Flutter 应用程序进行基本身份验证。我只需要某种基本身份验证,以便我的服务器可以知道它正在向哪个用户提供数据。

【问题讨论】:

你用的是什么版本的插件? 我尝试了很多版本,但我最终看到了同样的错误。我使用的版本:1.0.3、1.0.1、2.0.1 我想你已经尝试过执行:flutter clean, then a flutter packages get and after a flutter run? 你解决了吗? 【参考方案1】:

运行 flutter clean 并重新启动 IDE 并完全重新构建应用程序。这将解决它。

【讨论】:

执行此操作后,我无法再运行我的程序。啊! 在完成flutter clean 之后,要么执行flutter install,要么您需要先为ios 构建flutter build ios。我目前只在 iOS 上开发,所以我不确定它在 android 上的表现如何。也许flutter build android【参考方案2】:

当我遇到这个问题时,我一直在努力解决这个问题。终于我意识到我做错了什么。我必须执行以下步骤 1>切换到master分支flutter channel master 2>flutter upgrade 3>flutter clean 4>最重要的部分,检查你是否有facebook插件。如果是,请完全设置(未测试)或将其删除(有效),因为它与谷歌插件混淆

【讨论】:

切换到master 分支不是一个好主意。 stable 分支是最佳的,因为它......嗯,稳定。您可能会在任何其他分支遇到错误。但是,正确设置 facebook 插件可以解决问题(至少它对我有用)。如果设置不正确,它将使自己以及其他插件抛出该异常。 更改分支没有帮助。删除 FB 身份验证有助于 Google 身份验证。终于建立FB有助于解决问题 #4 真的很重要 是的,这是与其他人唯一不同的地方。其他步骤只是为了确保您没有犯一个简单的错误。这就是为什么我提到它是最重要的 直接进入第 4 步!【参考方案3】:

最后我在颤振中发现了问题,因为 google 和 facebook login pub 之间存在冲突

在 pubspec.yaml 文件中

google_sign_in:^4.5.3

flutter_facebook_login: ^3.0.0 -> 删除这个

并评论所有的facebook登录代码

【讨论】:

如何为 usinbg facebook 解决这个问题? 检查我的答案,你可以完全实现facebook插件【参考方案4】:

事实证明,您不必删除 flutter_facebook_login 即可使 google_signin 工作。当flutter_facebook_login 在注册期间抛出并阻止google_sign_in 注册时,就会发生这种情况,正如flutter 的官方repo 的贡献者here 所说的那样。

该线程的cmetsone中提供的解决方案是在AndroidManifest.xml中注册Facebook插件,我也忘记了。在清单中注册 Facebook 解决了这个问题。

要在清单中添加的代码是:

<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>

<activity android:name="com.facebook.FacebookActivity"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name" />

<activity
    android:name="com.facebook.CustomTabActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="@string/fb_login_protocol_scheme" />
    </intent-filter>
</activity>

不要忘记在strings.xml 中添加所需的字符串

<string name="app_name">Your App Name</string>  <!-- app name on fb -->
<string name="facebook_app_id">Your FB ID</string>  <!-- fb app id -->
<string name="fb_login_protocol_scheme">Your FB protocol scheme</string>  <!-- fb+ fb app id -->

【讨论】:

在 AndroidManifest.xml 中添加的这个实际上解决了这个问题。当我与 google_sign_in 一起安装时,从 pubspec 中删除 flutter_login_facebookflutter_facebook_auth 暂时有效。【参考方案5】:

我的 Flutter 应用程序运行良好,直到我添加:

flutter_facebook_login: ^3.0.0

搜索了一阵Flutter的Github issue#62639和#61166,明确表示目前Google Sign In和Facebook Login插件不能一起使用。

【讨论】:

【参考方案6】:

对我来说是再次安装 pod

在flutter项目目录中打开终端并写入

cd ios
pod install

【讨论】:

【参考方案7】:

它最近发生在 Flutter 存储库的 beta 通道上。考虑从稳定的渠道结帐。

【讨论】:

【参考方案8】:

我一次尝试了很多东西,所以我不太确定,但我想这解决了问题。

flutter_facebook_login: ^3.0.0 -> remove this one

【讨论】:

【参考方案9】:

记住在flutter项目中安装插件后,热重载或重启都会抛出这个错误(缺少插件异常),需要重新运行应用! 仅纯 dart 代码支持热重载,插件包含原生代码(如 java 或 swift),这些原生代码必须可用于 dart 代码,因此重新编译是将原生代码推送到设备上运行的应用程序的唯一选择。

【讨论】:

以上是关于MissingPluginException(在通道 plugins.flutter.io/google_sign_in 上找不到方法 init 的实现)的主要内容,如果未能解决你的问题,请参考以下文章

MissingPluginException(未找到通道上的方法的实现)

GoogleMaps Flutter 插件 MissingPluginException

发布模式android中的MissingPluginException

尝试直接从 FLUTTER 发出呼叫:MissingPluginException(未找到方法 callNumber 的实现

android Unhandled Exception 上的 Flutter 运行错误:MissingPluginException(未找到方法的实现)

MissingPluginException(在通道 com.amazonaws.amplify/amplify 上找不到方法配置的实现)