La aplicación "hello world" de Cordova no se mostrará

Soy nuevo en Apache Cordova y no puedo obtener la aplicación Cordova "hola mundo" para mostrarla en Android . Estoy hablando de la aplicación predeterminada obtenida del comando "cordova create" de la CLI.

Leí la documentación e instalé todo según lo requerido (Node.js, npm, Cordova 5.0.0, ya tenía un SDK de Android, así que solo necesitaba actualizar el PATH).

Córdoba me dice que la construcción es un éxito.

A continuación, dice que la aplicación se inicia, pero lo único que cambia en la pantalla del dispositivo / emulador es que se abre un menú (como en la siguiente imagen): http://i.stack.imgur.com/F7bI2.jpg

He probado en un emulador y en un dispositivo real, los resultados son los mismos.

Comprobé la versión de la API y parece ser lo suficientemente alto (4.0.3). Estoy bajo Windows 7, con un JDK de Oracle. Pensé que tal vez un complemento faltaba e instalado cordova-plugin-dispositivo, pero no cambiar nada.

¿Es esto un error o me pierdo algo? ¿Hay algún medio para obtener un informe de error (nada inusual aparece con el "cordova run android" comando)?

Finalmente me dieron cuenta.

El problema parecía ser que el apk no estaba correctamente instalado. La aplicación fue de hecho capaz de ejecutar cuando lo instalé con el siguiente comando (como recomendó jojo en cordova ejecutar android se ejecuta bien, pero Android 4.1.2 no inicia la aplicación ): adb install <path_to_apk>

Así que comprobé el código de Córdoba para ver qué sucede cuando se instala apk, y lanzó manualmente el comando que Cordova está usando:

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

Devuelve: "Error: opción desconocida -d"!

Si simplemente eliminas la opción "-d", las aplicaciones se ejecutan normalmente con cordova run android . En Cordova 5.0.0 encontrarás esta orden en la línea 101 de las plataformas de archivos \ android \ cordova \ lib \ device.js (y en la línea 311 de las plataformas \ android \ cordova \ lib \ emulator.js para cordova emulate android ).

No sé qué significa esta opción "-d" también … ¿Es este un error de Cordova?

EDITAR

Como dice joris en el comentario:

El -d se supone que viene directamente después de adb (como en --device ) en lugar de después de la instalación. Así que puedes moverlo allí en vez de quitarlo.

Además, aquí está el problema abierto en apache cordova issue tracker

Ir a plataformas> android> cordova> lib> Here you will find device.js and emulator.js

Emulator.js

En emulator.js debe cambiar la línea siguiente (311) de ->

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

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

Device.js

En device.js debe cambiar la siguiente línea (101) de ->

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

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

Una vez que haya cambiado estos reconstruir la aplicación y ejecutarlo en su emulador!

Para los que no saben dónde encontrar esos archivos y utilizan iónicos están en:

Cordova \ lib \ device.js y cordova \ lib \ emulator.js en la plataforma / android

Cambiar el código en device.js y emulator.js no funcionó para mí (y de hecho introdujo un error donde cordova build android no funcionaría más). Mi problema era completamente diferente: tenía dos <application> s en mi AndroidManifest.xml que aparentemente no está permitido.

En algún lugar de la línea había añadido <application android:debuggable="true" /> a mi AndroidManifest.xml. Sin embargo, ese archivo ya tenía un elemento de "aplicación" que se parecía a esto:

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

Así que agregué la línea "debuggable" a la <application> existente (y quité la segunda <application> ) así:

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

Después de eso reconstruí usando cordova build android , lo ejecutó con éxito en mi dispositivo con cordova run android , y luego aplaudió mis manos porque finalmente trabajó (y asustó a mi perro).

SIN EMBARGO, incluso si esto no es su problema, he aquí cómo descubrí el problema: seguí las instrucciones de esta respuesta y ejecuté adb logcat con mi dispositivo conectado. Esa pestaña terminal se llenó inmediatamente con una mierda interminable.

Luego abrí una nueva ventana de terminal que podía ver al mismo tiempo, tomé nota de la última marca de tiempo en la salida logcat, y corrí cordova run android . La pantalla se llenó con más mierda, y luego volví a mi tiempo de inicio y lo revisé línea por línea. Finalmente encontré a mi culpable:

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

¡Espero que esto ayude!

  • PhoneGap / Sencha Touch: Problema de procesamiento de WebView en ocultar SoftKeyboard
  • No se puede escribir en el campo de entrada después de cargar una página con InAppBrowser y la carga del hilador
  • Sencha Touch 2 - Desempeño de Android
  • Cordova / error de compilación jónico (a veces): no tienen el entorno requerido
  • Ampliación de plugins cordova existentes / módulos phonegap
  • Fuentes personalizadas en Android PhoneGap
  • Cómo defino launchMode en AndroidManifest.xml - Uso de PhoneGap y JQM
  • Cordova add platform - Error al ejecutar el comando 'ant'
  • ¿A dónde apunta LocalFileSystem.PERSISTENT?
  • Smartphone acelerómetro gestos algoritmos
  • Devoluciones de llamada de Android InAppBrowser _system
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.