我正在尝试在我的 nexus5 模拟器中运行 react-native android 应用程序
adb devices
List of devices attached
emulator-5554 device
已启动打包程序 react-native start
正在运行的应用程序 - react-native run-android
在 'reactnative(AVD) - 6.0' 上安装 APK 'app-debug.apk' 无法安装示例/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 com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:113)
at com.android.builder.testing.ConnectedDevice$installPackages$0.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
at com.android.build.gradle.internal.tasks.InstallVariantTask.install(InstallVariantTask.groovy:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226)
react-native run-android
也会启动打包程序,无需手动启动。
对于小米设备
对于那些受此困扰的人,请尝试 lironess 在 Github Comment 中提到的内容
开启开发者模式 - 在你的手机中,进入设置,关于手机,然后点击 MIUI 版本 7 次。您会看到一个弹出窗口,说明您现在是开发人员。返回设置,附加设置,开发人员选项并启用USB调试。将您的手机连接到您的 PC/Mac 并在手机上授权您的计算机返回开发人员选项,向下滚动找到打开 MIUI 优化并将其禁用。您的手机将重新启动立即尝试 :)
尝试:react-native run-android --deviceId YOUR_ID
。
众所周知,adb 是片状的。尝试:
使用 $ adb kill-server 重新启动 adb
重启模拟器
使用 Genymotion 而不是库存的 Google 模拟器。
对于您的 AVD 模拟器设置,请尝试确保选中“使用主机 GPU”设置,然后重新启动模拟器并重试。
就我而言,我必须在 /sdklocation/platform-tools/ 中运行此命令
adb kill-server
然后再次运行并观察手机上的安装请求。希望这对某人有所帮助
对于像我这样在模拟器中遇到此问题的人,还有一个提示:尝试释放模拟器中的可用存储空间。这对我有用。
安装了如此多的测试应用程序和以前开发的应用程序 XD
如果您的设备或模拟器有一个与您正在构建的应用程序同名的应用程序。只需删除旧的。它将解决问题。
如果您已经在设备上安装了应用程序,请删除它。这对我有用
只需转到开发人员选项并在调试选项下启用通过 USB 安装。
即使我遇到了同样的问题,但重新启动 genymotion 并运行“react-native run-android”再次对我有用。在运行上述命令之前确保 genymotion 正在运行。
可能的原因
我最近遇到了这个问题,我首先在 CordovaJS 中开发了一个名为“myApp”的应用程序,其中应用程序域是 com.myapp 并安装了它(这是我开始做出反应的几个月前)。然后,当我切换到 react-native 时,我做了一个域 com.myapp 的应用程序并遇到了同样的问题。
所以我发现在 domain 和 source 方面存在冲突。
解决方案 :
卸载与您正在安装的应用程序具有相似域的应用程序,例如 com.example,然后重新启动您的手机。
它对我有用,我希望它也对你有用。
01 - 卸载安装在设备中的应用程序
03-然后运行
adb 杀死服务器
02 - 然后再次运行
react-native run-android
这个问题恰好出现在小米设备上。在开发者选项中,您不必禁用 MIUI 优化(禁用此选项不会同步您的帐户),而是启用“USB 调试”选项以及“通过 USB 安装”和“USB 调试(安全设置)”。这将解决问题:)
Sometimes it may happened due to insufficient storage within emulator.Try something like below:
1. Stop emulator
2. Open AVD Manager -> Wipe Data
3. Start emulator and run your project.
步骤:1 运行(杀死所有 adb)
adb kill-server
第 2 步:列出所有连接的设备(获取您的模拟器 ID)
adb devices
第 3 步:(将 ID 替换为第 2 步中列出的 ID)
react-native run-android --deviceId ID
注意:确保在您的模拟器或物理设备中卸载您以前的应用程序
在 MI 设备中。我通过转到开发人员选项-> 打开通过 USB 安装来解决这个问题。我希望它有用!