Превосходный андроид 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.
Ответы
Ответ 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>
Надеюсь, это поможет!