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ómo forzar una orientación horizontal para aplicaciones móviles construidas con cordova-cli?
- No se encontraron archivos Java que amplíen CordovaActivity. Cuando se usa "cordova build"
- Cambiar PhoneGap / Cordova Usuario-Agente para AJAX
- ¿Cómo abrir Twitter y Facebook con Phonegap?
- La aplicación Phonegap se cierra después de que la cámara capture la imagen.
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)?
- HTML 5 Entrada de archivos con iOS y Android
- La imagen tomó de la galería se exhibe en la orientación diferente mientras que usa el teléfono en androide
- ¿Deshabilitar el botón de retroceso del hardware en la aplicación iónica?
- Cordova / PhoneGap HTML5 GeoFence
- Phonegap iOS file.path
- La notificación de Cordova plugin (java) no va a app - android
- Elementos relativamente posicionado en desplazable absolutamente posicionado div "retraso" en el desplazamiento
- No en blanco antes del primer error de etiqueta
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 deadb
(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!
- Android: Crear un botón de acción flotante más grande con un icono más grande
- El divisor Horizonal más alto y más inferior no aparece en ListView