Подтвердить что ты не робот

Превосходный андроид cordova работает отлично. Но Android 4.1.2 не запускает приложение

Я начинаю разработку и приложение для Android с помощью Cordova 5.0.0 (кордова -v prints 5.0.0) и тестирую его на Moto Razr D1 с Android 4.1.2. Под Windows 7, кстати.

cordova build 

и вручную копирование платформ /android/build/output/apk/android -degug.apk в SD и установка отлично работает.

cordova emulate android 

отлично работает на эмуляторе с версией android > 4.1.2

cordova run android 

успешно работает, говорит, используя платформы apk/android/build/output/apk/android-debugger.apk, что кажется хорошо, установка приложения, запуск и ускорение запуска. однако, как вы можете видеть на этом снимке экрана

Скриншот Razr

Эта операция "ОБОИ/УПРАВЛЕНИЕ/НАСТРОЙКИ" происходит, и что она.

Если я выполняю:

cordova emulate android

На эмуляторе с Android 4.1.2 Jelly, равным выходом

BUILD SUCCESSFUL

Total time: 6.352 secs
Built the following apk(s):
    C:\android\Some\platforms\android\build\outputs\apk\android-debug.apk
Installing app on emulator...
Using apk: C:\android\Some\platforms\android\build\outputs\apk\android-debug.apk
Launching application...
LAUNCH SUCCESS

тот же самый "WALLPAPAER/MANAGE/SETTINGS", здесь другой снимок экрана Эмулятор Скриншот

Есть идеи, как решить эту проблему? Спасибо заранее...

PS: Если я ранее установил apk, Razr запустит старую версию вместо вещи WALLPAPER/MANAGE/SETTINGS. Поэтому я должен удалить его, прежде чем пытаться запустить команды запуска cordova.

4b9b3361

Ответ 1

Я встретил ту же проблему (приложение "Hello World" не будет отображаться) и нашел способ пройти через него (но я действительно не знаю понять основные причины).

Проблема возникла при установке apk. На Кордове 5.0.0 команды adb для установки apk можно найти в строке 101 файловых платформ \android\cordova\lib\device.js(и в строке 311 платформ \android\cordova\lib\emulator.js для кордовы эмулировать андроид):

adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"

Текущая команда возвращает мне: "Ошибка: неизвестный параметр -d"!

Если вы просто удаляете опцию "-d", приложения обычно запускаются с андроидом runova.

ИЗМЕНИТЬ

-d должен появиться сразу после adb (как в --device), а не после установки. Поэтому вы можете просто переместить его туда, а не удалять его.

Плюс, вот открытая проблема в трекер-версии apache cordova

Ответ 2

Вот несколько вещей, которые нужно проверить и знать, если вы не знаете:

  • Версия CLI cordova -v не обязательно совпадает с версией платформы cordova platform
  • Варианты вашей платформы между различными платформами (если они есть) могут не совпадать. Например, Android может иметь другую версию платформы, чем iOS.

Если вы обновили до последней версии кордовы-андроида sdk, убедитесь, что вы читаете через releasesasen.md: https://github.com/apache/cordova-android/blob/master/RELEASENOTES.md

Я не уверен, что такое SD, но я установил свои приложения через

adb install <path_to_apk>

После сравнения и проверки вашего загруженного apk на ваше устройство, которое, я считаю, легче отлаживать, чем эмулятор, запустите Android Debug Bridge с logcat:

adb -d logcat

Если вы предпочитаете отладку с помощью logcat через эмулятор, то:

adb -e logcat

Есть дополнительные флаги отладки, чтобы уменьшить количество слов: http://developer.android.com/tools/debugging/debugging-log.html. Вам нужно будет настроить спецификацию фильтра, как вам нравится, например: adb logcat ActivityManager:I MyApp:D *:S. Я предпочитаю использовать adb logcat *:D для захвата почти всех сообщений отладки, но немного уменьшаю многословность.

Надеюсь, при подключении и запуске logcat вы сможете поймать, какие ошибки могут произойти, чтобы вызвать вашу проблему.

EDIT: Вот еще один способ отладки устройства с помощью инструментов разработчика Chrome: https://developer.chrome.com/devtools/docs/remote-debugging

В общем, вот шаги из приведенной выше ссылки:

Требования: Chrome 32 или новее, USB-кабель для подключения к устройству Android, для отладки браузера требуется Android 4.0+, для отладки приложений требуется Android 4.4 +

  • Включить отладку USB на устройстве: Настройки > Параметры разработчика. Если у вас есть устройство Android 4.2+, параметры разработчика скрыты по умолчанию. Нажмите Настройки > О телефоне и коснитесь Номер сборки семь раз.
  • В "Опции разработчика" установите флажок Отладка USB.
  • Нажмите ОК, чтобы подтвердить, что вы включаете отладку USB.
  • Подключите устройство к компьютеру с помощью USB-кабеля.
  • Откройте браузер Chrome и в строке поиска/адресной строки хром://проверьте.
  • Установите флажок Откройте USB-устройства.
  • На вашем устройстве появится предупреждение. Нажмите ОК.
  • На странице хром://проверка должно отображаться ваше подключенное устройство. Нажмите ссылку "проверить" устройства. Должны появиться инструменты разработчика Chrome.

В приведенной выше ссылке удаленной отладки содержится дополнительная информация о прямой трансляции, настройке прокси-сервера, переадресации портов и сопоставлении виртуальных хостов.

Ответ 3

Для тех, кто использует Cordova 6.1.1 и имея схожую проблему не открывать/устанавливать приложение, мне было нужно запустить ionic emulate android один раз, чтобы открыть эмулятор android с помощью главного экрана. Затем в другое окно терминала снова запустите ionic emulate android, который установил приложение на уже открытый эмулятор, и все нормально работало.

Нашел аналогичную проблему здесь: https://forum.ionicframework.com/t/ionic-serve-works-correctly-ionic-emulate-android-just-displays-android-emulator-home-screen/53524/6

Ответ 4

Решение: emulator.js под платформами \android\cordova\lib

Перейдите к строке 311 и закомментируйте строку

// return exec('adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"', os.tmpdir())

и вставьте новую строку

return exec('adb -s ' + resolvedTarget.target + ' install -r  "' + apk_path + '"', os.tmpdir())

он работает.

Ответ 5

для меня этот трюк отлично работал, удалив -d

но мне пришлось установить apk manullay в первый раз, перейдя на телефон, а затем я смог запустить приложение напрямую с помощью ионного запуска Android.

надеюсь, что это поможет кому-то

Ответ 6

Изменение кода в device.js и emulator.js не сработало для меня (и фактически ввело ошибку, в которой cordova build android больше не будет работать). Моя проблема была совершенно иной: у меня было два <application> в моем AndroidManifest.xml, который, по-видимому, не разрешен.

Где-то вдоль линии я добавил <application android:debuggable="true" /> в свой AndroidManifest.xml. Однако этот файл уже имел элемент "application", который выглядел следующим образом:

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">

Итак, я добавил строку "debuggable" в существующую <application> (и удалил вторую <application>) так:

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">

После этого я перестроил с помощью cordova build android, успешно выполнил его на своем устройстве с помощью cordova run android, а затем хлопнул в ладоши и испугал мою собаку.

ОДНАКО, даже если это не ваша проблема, вот как я обнаружил проблему: я выполнил инструкции в ответе jojo и запустил adb logcat с подключенным устройством. Эта вкладка терминала сразу же заполнилась бесконечным дерьмом.

Затем я открыл новое окно терминала, которое я мог просматривать одновременно, я принял к сведению последнюю временную метку в выводе logcat, и я запустил cordova run android. Экран заполнился большим количеством дерьма, а затем, как только все успокоилось, я прокрутил назад до моего начального времени и просмотрел его по очереди. В конце концов я нашел своего виновника:

PackageParser: <manifest> has more than one <application>

Надеюсь, это поможет!