React Native:应用程序:安装调试失败

99

安装 APK 调试版本到我的设备失败。

jianglinghuadeMacBook-Pro:hello jianglinghua$ react-native run-android
JS server already running.
Building and installing the app on the device (cd android && ./gradlew installDebug...
WARNING [Project: :app] Current NDK support is deprecated.  Alternative will be provided in the future.
:app:preBuild UP-TO-DATE
......
:app:assembleDebug UP-TO-DATE
:app:installDebug
Installing APK 'app-debug.apk' on 'MI NOTE LTE - 6.0.1'
Unable to install /Users/jianglinghua/Desktop/hello/android/app/build/outputs/apk/app-debug.apk
com.android.ddmlib.InstallException: Failed to establish session
    at com.android.ddmlib.Device.installPackages(Device.java:894)
    ........
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Failed to establish session

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 13.945 secs

无法将应用安装到设备上,请参阅上面的错误详细信息。 确保您运行了Android模拟器或已连接了设备,并已设置好Android开发环境:https://facebook.github.io/react-native/docs/android-setup.html

我查看我的设备

jianglinghuadeMacBook-Pro:hello jianglinghua$ adb devices
List of devices attached
98333978    device

你在运行项目之前是否运行了 Yarn?如果是,请告诉我是否出现了任何错误。 - Saeid
我重启电脑后忘记重新插上手机了,也许你们中的一些人也会忘记这个。 - Myzel394
37个回答

71

我的情况是,我创建了一个新的应用程序,但是遇到了错误,尝试了许多可能的方法和来自GitHub和Stack Overflow的答案。没什么作用。

错误enter image description here对我来说解决方案是...检查是否已经安装了同名应用程序。

删除旧应用程序并运行react-native run-android

对我起作用了。


这个错误也曾经困扰过我,我不知道它的原因。 我看了你的回答。我注意到在过去,我曾经安装了应用程序的一个版本在我的手机上。我删除了它并运行了命令再次运行应用程序。 应用程序在设备上正常运行。 - fatemeh kazemi
删除旧的应用程序并运行命令对我有效,但为什么会发生这种情况。我之前使用过MacBook Air,没有出现这样的问题。 - Shail Patel
@shailPatel 我明白了,这意味着这是由于 React Native 中的构建包设置引起的。可能需要在 React Native 存储库中探索此问题。如果将其列为问题,则可能会有更多详细信息。 - Jahanzeb Nawaz
这个解决方案对我也起作用了。 - Vishali

68

由于您使用的是带有MIUI的小米手机

请尝试以下操作:

1. 进入开发者选项,向下滑动,找到“打开MIUI优化”并将其禁用。

2. 您的手机将重新启动。

3. 现在检查一下是否可以了。


如果您使用的是其他安卓手机,它带有自定义的皮肤/UI层覆盖在安卓操作系统上,则尝试禁用该UI提供的优化功能,并进行检查。

(通常可以在“开发者选项”中找到此选项)


请确保您已成功登录小米社区(Mi Community)cd android ./gradlew clean cd .. - مصطفى

68
在我的安卓设备上,问题出在我之前安装在手机上的应用程序的先前构建版本。 以下步骤解决了我的问题:
  1. 删除任何以前的应用程序构建,包括调试版本和签名apk版本

  2. 在Windows上: 在项目的根目录下运行:


 cd android
 gradlew clean
 cd ..
 npm cache clean --force

在 MacOS 或 Linux 上: 在您的项目根目录下运行:

 cd android
 ./gradlew clean
 cd ..
  1. 重新启动您的安卓设备
  2. 运行 react-native run-android

6
在执行gradlew clean、删除APK文件以及卸载设备上的应用程序之前,我需要额外执行npm cache clean --force这一步骤。 - John
1
这对我有效,因为我已经创建了我的应用程序的签名apk。再次感谢。 - Alabi Temitope
2
@John:npm cache clean --force 这段代码救了我的一天。 - SAM
将 .\gradlew 回退为 ./gradlew 对我起作用了。 - Edson Junior
在我的MacBook上,npm cache clean --force似乎解决了问题。 - Dazzle

30

我曾经遇到这个问题。我的应用程序在模拟器上运行良好,但在设备上无法运行,出现以下错误:

app:installDebug 失败。

如果在设备上有同名(或包名相同)的其他应用程序: 请将应用程序重命名或从设备上删除它们。


这对我有效 - Resfe
对我来说起作用了,我从模拟器中卸载了应用程序,然后执行了npm start(在我的情况下,将是你的命令在你的情况下),然后它起作用了。 - undefined

26

这对我有效

  1. 从您的手机上卸载该应用程序
  2. 切换到android目录
  3. 运行gradlew clean命令
  4. 返回上一级目录
  5. 运行react-native run-android命令

1
在我的情况下,当设备上已经安装了应用程序时,问题就出现了。因此,卸载旧应用程序非常重要。 - Tarun Gupta

18

步骤1:关闭Android模拟器。

步骤2:打开Android虚拟设备管理器并按以下图像清除数据: enter image description here

步骤3:打开终端并输入

cd android
.\gradlew clean
cd ..
npm cache clean --force

第四步: 在终端中运行:

yarn run android

注意:如果你正在使用yarn,只需要运行以下命令:

yarn cache clean

1
谢谢,这对我有用。在清除数据后。 - sachinsaini
今天这个人救了一天。但是其他的答案在过去的某个时候对我都有效 :D。 - undefined

12

我遇到了同样的问题并进行了一些研究。这个问题在中国的Android手机上经常出现。

将android/build.gradle文件中第8行的gradle版本更改为1.2.3可以解决它。

classpath 'com.android.tools.build:gradle:1.2.3'

8
对我来说没有用,需要至少2.2版本。我安装了2.14.1版本,正在使用Micromax Q348手机,在adb设备中找到它,运行的是Android 5.1系统。 - Amit Bravo

10
如果以上解决方法都不起作用,那么请尝试以下步骤来进行仿真器的冷启动:
打开AVD管理器 -> 编辑设备 -> 显示高级设置 -> 启动选项 -> 选择“冷启动”而不是“快速启动”。

9

我解决了这个问题,通过为设备添加更多内存来实现,具体操作如下:

  1. 打开Android Studio
  2. 点击"更多操作"并打开虚拟设备管理器
  3. 点击铅笔图标
  4. 点击"显示高级设置"
  5. 增加"内部存储选项"中的内存
  6. 点击"完成"

1
请确保在设备已经运行的情况下重新启动它。 - Andru
1
真的有效!尽管这可能不是显而易见的原因。 - Anna Logacheva

8
  1. 打开 android/build.gradle ,将

    classpath 'com.android.tools.build:gradle:2.2.3'

    改为

    classpath 'com.android.tools.build:gradle:1.2.3'

  2. 接着,打开 android/gradle/wrapper/gradle-wrapper.properties ,将 distributionURL 改为https://services.gradle.org/distributions/gradle-2.2-all.zip

  3. 然后再次运行。


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