emulator-5554未经授权用于adb设备

34

我试图将我的React Native项目在Mac操作系统上通过Android模拟器运行,但是出现了错误。在Windows上可以正常运行。在Mac上,我打开终端并输入react-native run-android,然后出现了以下错误信息:

$ react-native run-android
Scanning 616 folders for symlinks in /Users/John/Documents/myreactnativeproject/node_modules (17ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html

我输入adb devices,然后看到以下结果

List of devices attached
emulator-5554   unauthorized
我进入我的安卓模拟器的设置,然后进入“关于手机”,点击“版本号”七次以启用开发人员选项。在开发人员选项中,我启用了USB调试,禁用了通过USB验证应用程序,并将其他所有内容保留为默认设置。我关闭了我的安卓工作室和模拟器,重新启动了它。但是仍然出现了上面提到的相同问题。 我做错了什么?
编辑: 我刚把我的安卓手机连接到了我的Mac电脑上。当我运行adb devices时,看到了这个结果:
List of devices attached
YLEDU16B18004313    device

但是当我运行 react-native run-android 时,我得到了与上面相同的错误。因此,也许我的 react-native 设置有问题?


第二次编辑

我通过添加以下额外步骤成功将应用部署到我的安卓手机:

  • chmod 755 android/gradlew

  • 由于某种原因,当我在终端中输入echo $ANDROID_HOME时,结果为/Users/John/Library/Android/sdk。但是如果我将echo $ANDROID_HOME行添加到我的android/gradlew文件中,它什么也不会输出。当我运行react-native run-android命令时,编译器抱怨未定义 ANDROID_HOME。所以我必须再次输入export ANDROID_HOME=/Users/John/Library/Android/sdk,然后运行react-native run-android命令才能将其部署到我的手机。

不过,我的模拟器仍然无法正常工作。我得到的新错误信息是Skipping device 'emulator-5554' (emulator-5554): Device is UNAUTHORIZED。但至少我有一个临时解决方案,并可以使用手机进行调试。


第三次编辑

我通过进入我的 Android 虚拟设备并删除虚拟设备来摆脱emulator 5554 unauthorized错误。然后,我重新安装了它。现在我的 adb 设备显示为emulator 5554 device。我现在可以将应用部署到模拟器上。


{btsdaf} - bennygenel
{btsdaf} - John
我刚刚试了一下,我创建了一个新项目,并且在没有启动任何模拟器的情况下运行了react-native run-android命令。该命令通过了所有的构建阶段,然后报错说找不到连接的模拟器。如果您将Android文件从Windows移动到了其他地方,可能会出现一些冲突导致了这个问题。您尝试过运行 cd android && ./gradlew clean 吗? - bennygenel
1
{btsdaf} - bennygenel
1
@bennygenel 好的,我已经解决了emulator 5554未授权的问题,现在它显示为emulator 5554设备,并且现在可以接受react-native构建。现在一切都正常工作! 我在EDIT 3中进行了说明。 - John
显示剩余10条评论
13个回答

67
在我的情况下,使用具有Google APIs镜像的虚拟设备而非Google Play镜像,对我有用。
问题在于只有在Android Pie上运行的唯一模拟器,其他模拟器则不行。
在Android Studio中:
  1. 打开 Android 虚拟设备管理器。
  2. 创建一个新的虚拟设备。
  3. 选择任何您想要的硬件。
  4. 选择目标为“(Google APIs)”而非“(Google Play)” 的任何系统镜像(如果未找到,请尝试查看“x86 Images”选项卡或“Other Images”选项卡)。
  5. 完成!

12
第4项解决了我的问题,我之前使用的是 Google Play 作为系统映像,现在改成了 Google APIs。 - Sarotobi
4
谢谢,使用Google APIs作为系统镜像成功了。 - Sadik anass
在 Android S 预览版中仍然是一样的(使用 Google API)。 - CoolMind
2
如果您想尝试Google Play服务,则不适用! - صلي علي محمد - Atef Farouk
有没有其他选择?我需要一个更新的Chrome来进行测试,但在Google APIs镜像上没有简单的更新Chrome的方法。 - Tibi

47

Android模拟器默认在设置中启用了“USB调试”。您只需要清除模拟器的数据。按照以下步骤进行操作即可:

  1. 关闭模拟器并在命令提示符中运行命令adb kill-server。如果adb未设置在您的路径中,则您可能需要从包含adb的目录中运行此命令。
  2. 从AVD操作菜单中选择清除数据选项。 输入图像说明

  3. 现在启动模拟器,它应该可以正常工作。


6
我的模拟器默认未启用"USB调试"。我使用的是Android SDK Manager而不是Android Studio,但这一步在我的设备上无法运行。 - user8031952
这个答案是最佳的。 - Joel Jerushan
按照你的步骤操作后,对我很有帮助。 - yancaico
我在多个地方尝试了adb命令,但似乎没有安装或找到。我正在使用Android Studio 3.5.1。 - Pete Alvin
1
如果您已经安装了Android SDK,则可以在SDK内的platform-tools文件夹中找到adb。 - srs

24

创建新的虚拟设备,并确保您选择Google API。 这里输入图片描述

运行新设备!这应该可以工作。

这里输入图片描述


13

在我的情况下,以下步骤有效:

  1. 从 AVD 管理器中清除数据
  2. 现在进行冷启动

7
我成功地在Pixel 2,Android 9.0(Google Play),API 28,x86_64虚拟设备(Intel HAXM)上验证了adb。问题应该与扩展控件有关(虚拟设备启动时的底部三个点图标菜单),谷歌播放菜单正在检查Google Play服务的版本。当adb未经授权时,此页面显示正确的版本,并且更新按钮在手机内部打开Play商店与Play服务应用程序,以便您可以更新它。
我采取的步骤是:
1.确保在Dev设置中已打开USB调试。 2.撤销USB调试授权。 3.确保扩展控件>设置>高级>OpenGL选项设置为:“桌面本机OpenGL”和“渲染器最大值(高达OpenGL ES 3.1)”,以使模拟器界面、动画等快速运行! 4.关闭模拟器。 5.在Android Studio中的“您的虚拟设备”中,单击操作中的向下箭头>选择“立即冷启动”。 6.设备启动时,您必须快速,记住并接受USB连接的对话框将显示并在不到1秒的时间内消失(再次猜测与一些自动化脚本有关)。
如果您在对话框消失之前成功单击“记住”和“确定”复选框和按钮,则完成。否则,您必须重新关闭电源并进行冷启动。
之后,请勿清除您的模拟器,否则您将不得不再次进行疯狂的竞速点击!

2
我遇到了相同的问题,使用相同的系统镜像...在冷启动后会出现“授权”屏幕,但只持续不到一秒钟就消失了...我会尝试找到让它重新出现的方法。顺便说一句,谢谢! - Fabio

4

我运行了adb kill-serveradb devices命令,设备将重新出现。 对于模拟器,默认设置是启用调试的。


3

将图形设置为“Software - GLES 2.0”的模拟器对我有用(使用Nexus 6映像)。

我最初使用的是Nexus 5X映像,这不允许我选择图形选项。

注意:在此之前,我已按照OP在编辑2和编辑3中提到的步骤进行了操作。


2

2022年的答案

这个帖子真是可惜了:有那么多“答案”,评论和赞,但都不起作用。没有人简单地提到,“adb未授权”是由存储在~/.android/adbkey和~/.android/adbkey.pub中的adb密钥引起的。删除并重新创建它们后,问题得到解决。

来源:Android模拟器未经授权


并非总是如此。我无法使用SDK 25和Android 7.1.1的旧模拟器解决问题,但在Android 7.0上运行良好。 - andreszs
这也不是一个真正的答案,为什么会发生这种情况? - vpzomtrrfrt

1
我需要使用Google Api创建一个新的模拟器。清除数据对我没有起作用。

1

如果模拟器设备上未启用USB调试,可能会出现这种情况。

前往模拟器设备,启用开发者选项和USB调试。

enable USB debugging


多年来它一直没有为我工作,但在API 29模拟器上,我创建了一个avd,使用了上面答案中提到的Google APIs镜像。 - CoolMind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接