2015-05-10 2 views
7

Я новичок в Apache Cordova и Я не могу получить приложение «Hello World» из Кордовы для Android на Android. Я говорю о приложении по умолчанию, полученном из команды «cordova create» из CLI.Приложение "hello world" не отображается

Я прочитал документацию и установил все по мере необходимости (Node.js, npm, Cordova 5.0.0, у меня уже был Android SDK, поэтому мне просто нужно было обновить PATH).

Кордова сообщает мне, что сборка выполнена успешно.

Затем он говорит, что приложение запущено, но единственное, что изменения на экране устройства/эмулятором является то, что меню открывается (как на рисунке): http://i.stack.imgur.com/F7bI2.jpg

Я пытался на эмуляторе и на реальном устройстве результаты одинаковы.

Я проверил версию API и, похоже, достаточно высок (4.0.3). Я под Windows 7, с Oracle JDK. Я подумал, что, возможно, плагин отсутствовал и установил устройство cordova-plugin, но ничего не изменило.

Это ошибка или мне что-то не хватает? Есть ли какое-то среднее, чтобы получить отчет об ошибке (ничего необычного не появляется с командой «rootova run android»)?

+0

Включили ли вы режим отладки в телефоне? Вы также можете попробовать вручную установить APK. – tl8

+0

У меня тоже есть эта проблема. То же самое: http://stackoverflow.com/questions/29956031/cordova-run-android-executes-fine-but-android-4-1-2-doesnt-start-the-app – ManBearPig

+0

Режим отладки включен. Я не пытался вручную установить apk. Если это та же проблема, что и ManBearPig, я думаю, она должна работать ... Я попробую. – proprit

ответ

18

Я, наконец, понял.

Проблема была в том, что apk был неправильно установлен. Приложение было на самом деле может работать, когда я установил его с помощью следующей команды (как Рекоммендуемый по JoJo в cordova run android executes fine. But Android 4.1.2 doesn't start the app): adb install <path_to_apk>

Поэтому я проверил Кордова код, чтобы увидеть, что происходит при установке APK, и вручную запустил команду Кордова использует:

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

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

Если вы просто удалите опцию «-d», приложения работают нормально с cordova run android. На Кордове 5.0.0 вы найдете эту команду в строке 101 файловых платформ \ android \ cordova \ lib \ device.js (и в строке 311 платформ \ android \ cordova \ lib \ emulator.js для cordova emulate android).

Я не знаю, что означает этот параметр «-d» ... Это ошибка Кордовы?

EDIT

Как говорит Йорис в комментарии:

The -d is supposed to come directly after adb (as in --device) instead of after install. So you can just move it there instead of removing it.

Plus, here is the opened issue on apache cordova issue tracker

+0

решил это для меня тоже, thx –

+1

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

+0

несколько месяцев спустя .. и у меня все еще такая же проблема. кто-нибудь знает, была ли обновлена ​​кордова, чтобы исправить это? – otmezger

0

Для тех, кто не знает, где найти эти файлы и использовать ионные они находятся в:

cordova \ lib \ device.js и cordova \ lib \ emulator.JS в платформе/Android

6

Goto Платформы> Android> Cordova> Lib>Here you will find device.js and emulator.js

emulator.js

В emulator.js вы должны изменить следующую строку (311) от ->

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

До return exec('adb -d -s ' + resolvedTarget.target + ' install -r "' + apk_path + '"')

device.js

device.js В необходимо изменить следующую строку (101) ->

var cmd = 'adb -s ' + resolvedTarget.target + ' install -r -d "' + apk_path + '"'; 

Для var cmd = 'adb -d -s ' + resolvedTarget.target + ' install -r "' + apk_path + '"';

После того, как вы изменили их восстановить приложение и запустить его на эмуляторе!

+1

Решил мою проблему. Я использую cordova 5.3.1 –

+0

Я ЛЮБЛЮ ТЕБЯ РАБОТАЮТСЯ – shareef

0

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

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

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

Так я добавил «отладочная» линию к существующему <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, а затем хлопнул свои руки, потому что ему окончательного (и испугался моей собаки).

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

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

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

Надеется, что это помогает!

Смежные вопросы