无法在设备上执行shell命令“ getprop,dev.bootcomplete”:Android的错误

时间:2018-06-19 19:03:19

标签: android cordova ionic-framework android-emulator

在通过Ionic框架构建新的debug-apk文件并将其部署到Android仿真器之后,出现了getprop,dev.bootcomplete错误。

该模拟器会弹出以打开Android的主屏幕,但该应用未安装在模拟器上,因此在启动模拟器时不会打开。

我曾就此问题查看过类似的文章,并尝试了adb中的不同步骤,删除了该模拟器并为其创建了新设备,并且同时安装了我要测试的API级别的x86和x86_64映像26.我不确定我还能做什么。我不认为从cordova中删除android,然后再将其重新添加会解决此问题。错误日志如下。

编辑:

到目前为止,我在该问题上看到的每个帖子都未能解决问题。我仍然需要卸载并重新安装Android Studio或任何SDK工具,但我认为不需要。

可能导致此问题的原因是我不得不将我的NDK版本还原到r16b,而不是最新的r17b,因为我的应用程序无法使用离子Cordova正确构建。现在它可以正确构建,但是模拟器仍然存在此问题,因此无法安装我的应用。

错误日志:

emulator: Requested console port 5584: Inferring adb port 5585.
HAX is working and emulator runs in fast virt mode.
(node:11468) UnhandledPromiseRejectionWarning: CordovaError: Failed to execute shell command "getprop,dev.bootcomplete"" on device: Error: C:\Users\noaht\AppData\Local\Android\sdk\platform-tools\adb.exe: Command failed with exit code 1 Error output:
error: device still connecting
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\lib\Adb.js:88:25
    at _rejected (C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:864:24)
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:890:30
    at Promise.when (C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:1142:31)
    at Promise.promise.promiseDispatch (C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:808:41)
    at C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:624:44
    at runSingle (C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:137:13)
    at flush (C:\Noah\Noah School\SSAapp\SMAPP\platforms\android\cordova\node_modules\q\q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
(node:11468) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11468) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
emulator: S
aving state on exit with session uptime 4695 ms

4 个答案:

答案 0 :(得分:43)

这是cordova-android bug,因为Google可能在尝试运行该应用时更改了错误消息。

它已经修复,并在cordova-android 7.1.1或更高版本中发布。如果您无法更新到那些版本,请执行以下操作:

我认为,如果您应用this并将自己更改为yourAppName/platforms/android/cordova/lib/emulator.js

更改

if ((error && error.message && (error.message.indexOf('not found') > -1)) || (error.message.indexOf('device offline') > -1))

if ((error && error.message && (error.message.indexOf('not found') > -1)) || (error.message.indexOf('device offline') > -1) || (error.message.indexOf('device still connecting') > -1))

答案 1 :(得分:18)

另一个解决方法是从Android Studio启动模拟器,然后运行cordova命令运行应用程序。这样,科尔多瓦发现模拟器已经在运行,并且避免了竞争情况。 谢谢!

答案 2 :(得分:3)

这是适用于Ionic 3版本的解决方案:

  1. 打开Android Studio,转到“ AVD管理器”
  2. 创建一个新的AVD设备,单击“显示高级设置”
  3. 选择“冷启动”。默认情况下,“快速启动”处于选中状态。

尝试再次运行模拟器。

答案 3 :(得分:0)

在Windows 10计算机上使用以下命令时,我得到了相同的错误

cordova emulate android --target=N5Oreo

Windows 10 Corodva 7.1.0 Oreo based emulator

问题由jcesarmobile(Failed to execute shell command "getprop,dev.bootcomplete"" on device: error for Android)暂时解决, 但它不断地重铺。

当我执行命令时,仿真器已启动,但错误不断出现。我重新启动机器,然后运行了几天,然后又启动了。

我发现adb是一个强大的工具。因此,我不用cordova emulate android --target=N5Oreo来构建和启动,而是使用cordova build android并通过使用adb install myApp.apk将生成的构建安装到当前运行的模拟器中。