在通过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
答案 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版本的解决方案:
尝试再次运行模拟器。
答案 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
将生成的构建安装到当前运行的模拟器中。