Flutter 不提示设备进行授权对话框

Posted

技术标签:

【中文标题】Flutter 不提示设备进行授权对话框【英文标题】:Flutter does not prompt the device for an authorization dialog 【发布时间】:2020-06-15 19:56:45 【问题描述】:

adb 可以通过 USB 和 WiFi 连接到我的设备(小米红米 4、MIUI 11.0.2、android 7.1.2)。但是,我尝试连接颤振没有成功。当我通过 USB 连接时,Flutter 会检测到我的设备,但不会提示输入授权对话框:

$ flutter doctor

Doctor summary (to see all details, run flutter doctor -v):                                                                             
[✓] Flutter (Channel beta, v1.14.6, on Linux, locale en_US.UTF-8)                                                                       
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Android Studio (version 3.6)                                                                                                        
[!] Connected device                                                                                                                                                                                        
! Doctor found issues in 1 category.

$ flutter devices                                                                                                                         
No devices detected.                                                                                                                    

Run 'flutter emulators' to list and start any available device emulators.                                                               

Or, if you expected your device to be detected, please run "flutter doctor" to diagnose potential issues, or visit                      
https://flutter.dev/setup/ for troubleshooting tips.                                                                                    

• Device 9fd66a407d14 is not authorized.                                                                                                
You might need to check your device for an authorization dialog. 

我试过了

adb kill-serveradb start-server 以及断开和重新连接我的设备 从我的手机撤消 USB 调试授权 从我的手机禁用和重新启用 USB 调试 重启手机

但是flutter还是说我的设备没有被授权。

有解决办法吗?

【问题讨论】:

一旦我遇到华为手机的这个问题并重新启动它就可以解决问题。 @P4yam 忘了说我也这样做了,但它仍然没有提示我 您使用的是哪个操作系统?窗户? @Darish 我在 Linux 上 尝试以“文件传输”模式连接设备。基本上是“充电”以外的任何其他模式。您也可以尝试运行命令adb reconnect offline 尝试重新连接到离线/未经授权的设备 【参考方案1】:

adb 有另一个问题,当我通过 USB 或 WiFi 连接到我的设备时,即使我选中“始终允许来自这台计算机”,它也会提示我进行授权(这种情况不止一个年,我从来不知道为什么)

原来那是因为我拥有 root 用户拥有的 ~/.android/adbkey。因此,作为普通用户,adb 将无法写入该文件,这意味着它无法记住设备。我通过in this answer的步骤解决了这个问题:

如this issue 中所述,此 如果您第一次以 root 身份运行adb,可能会发生这种情况。它创建了一个 您计算机上的密钥文件由 root 用户拥有,因此您的普通用户 帐户无法读取或覆盖它。

检查是否是这种情况:

$ ls -l ~/.android/adbkey
-rw------- 1 root root 1708 Nov 13  2012 .android/adbkey
             ^ notice root here

修复它:

$ sudo chown $USER: ~/.android/adbkey
$ ls -l ~/.android/adbkey
$ -rw------- 1 thomas thomas 1708 Nov 13  2012 /home/thomas/.android/adbkey
               ^ now shows your username and primary group

最后重启adb服务器:

$ adb kill-server
$ adb start-server

一旦我解决了这个问题,Flutter 就完美运行了!

【讨论】:

【参考方案2】:

正如达里什先生建议的那样…… 设置 -> 附加设置 -> 开发人员选项 -> 撤销 USB 调试并断开您的设备(这会删除以前的授权并要求新的授权)。

但有时它不起作用。所以去 设置 -> 附加设置 -> 开发人员选项 -> 选择 USB 配置 -> 在此处选择充电选项。它将显示自动化对话框。

【讨论】:

【参考方案3】:

您可以尝试撤销 USB RSA 指纹并重新连接。

给你。

设置 -> 附加设置 -> 开发者选项 -> 撤销 USB 调试并断开您的设备。

重新连接后,您会看到一个 RSA 指纹验证窗口,点击接受。完成。

注意: 如果您的手机配置了多个用户帐户,请确保您使用的是主用户帐户(管理员)。

【讨论】:

我确实按照问题中的说法尝试过一次,但它仍然没有提示我授权 @Spikatrix 在 linux 中,您是否尝试更改 USB 模式以传输照片(PTP)?? 是的,我确实试过了,文件传输模式也没有成功 flutter emulators 确实显示了我安装的所有 3 个模拟器,尽管我没有在它们上尝试过颤振应用程序。我想在我的设备上而不是在模拟器上安装颤振应用程序,主要原因是我只有 8 GB 的 RAM,而模拟器会占用大量的 RAM。另外,你的意思是安装一个颤振调试 apk 吗? 刚刚将示例 Flutter 应用 APK 传输到我的设备并安装它,它工作得很好。另外,我可以通过 Android Studio 直接在 Android 模拟器上安装它,它也可以正常工作。我的设备未在 Android Studio 中显示,因为它未经授权【参考方案4】:

我使用的是 Windows 10,我认为它不会直接帮助你,我只是想分享我的问题是如何解决的,并可能对那里的人有所帮助

使用 android studio - 查找菜单工具 > sdk manager

在 sdk manager find -> 外观和行为 |系统设置 |安卓 SDK 在 android sdk 找到 SDK Tools Menu 并安装 Google USB Driver

在设备管理器 (Win + R -> devmgmt.msc) 为 adb 安装 Google USB 驱动程序(在我的情况下,我的手机已经安装并且我更新了驱动程序)。

之后我们必须连接手机并信任计算机(我建议先打开usb调试并在开发者选项中撤销所有usb调试权限)

【讨论】:

以上是关于Flutter 不提示设备进行授权对话框的主要内容,如果未能解决你的问题,请参考以下文章

Unity连接Android设备时的授权

adb 连接时候不弹出授权对话框

错误 Dart/Flutter: 'context != null': 不正确

adb 常用命令记录

Coinbase Oauth2 授权不弹出对话框

Flutter中showDialog()后关闭Dialog