Не удалось выполнить команду оболочки "getprop,dev.bootcomplete""на устройстве: ошибка для Android
Я получаю getprop,dev.bootcomplete
ошибка после сборки и развертывания нового файла debug-apk в эмуляторе Android через Ionic framework.
Эмулятор откроется на главном экране для Android, но приложение не установлено на эмуляторе и, следовательно, не открывается при запуске для эмулятора.
Я просматривал похожие посты по этой проблеме и пробовал разные шаги в adb, удаляя и создавая новые устройства для эмулятора, и у меня установлены образы x86 и x86_64 для уровня API, который я тестирую, на котором API 26. Я Я не уверен, что еще я могу сделать. Я не верю, что удаление андроида из Cordova и добавление его обратно решит проблему. Журнал ошибок находится ниже.
Редактировать:
Каждый пост, который я видел до сих пор по этому вопросу, не решал проблему. Мне еще предстоит удалить и переустановить Android Studio или любой из инструментов SDK, но я не думаю, что мне это нужно.
Кое-что, что может быть причиной проблемы, заключается в том, что мне пришлось вернуть мою версию NDK обратно в r16b вместо более поздней версии r17b, потому что мое приложение работало некорректно с использованием ionic 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
2 ответа
Это ошибка Cordova-Android, потому что Google, вероятно, изменил сообщение об ошибке при попытке запустить приложение.
Это уже исправлено и выпущено в Cordova-Android 7.1.1 или новее. Если вы не можете выполнить обновление до этих версий, сделайте:
Я думаю, что это будет работать, если вы примените это изменение самостоятельно 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))
Другой обходной путь - запустить эмулятор из студии Android, а затем запустить команду cordova для запуска приложения. Таким образом, Cordova находит, что эмулятор уже запущен, и избегает состояния гонки. Спасибо!
Это было решение для меня в версии Ionic 3:
- Откройте Android-студию, перейдите в AVD Manager
- Создайте новое устройство AVD, нажмите "показать дополнительные настройки"
- Выберите "Холодная загрузка". По умолчанию выбран вариант "Быстрая загрузка".
Попробуйте снова запустить эмулятор.
Я получил ту же ошибку при работе со следующей командой на моем компьютере с Windows 10,
cordova emulate android --target=N5Oreo
Windows 10
Corodva 7.1.0
Oreo based emulator
проблема была временно исправлена с помощью ответа jcesarmobile (не удалось выполнить команду оболочки "getprop,dev.bootcomplete""на устройстве: ошибка для Android), но она продолжала обновляться.
Когда я выполняю команду, эмулятор запускается, но ошибка продолжает появляться снова и снова. Я перезапустил машину, и затем она работала в течение нескольких дней, затем снова включилась.
я нашел это adb
это мощный инструмент. Так что вместо зависимости от cordova emulate android --target=N5Oreo
чтобы построить и запустить я использовал cordova build android
и установил результирующую сборку с помощью adb install myApp.apk
на текущий запущенный эмулятор.