Que es Cordova?
Cordova es la plataforma que nos permite programar en JavaScript y mostrar nuestra aplicación en prácticamente cualquier dispositivo (iOS, Android, y mediante Electron en Windows, Ubuntu y Mac) a través de un WebView, pero pudiendo acceder a casi todas las características de este dispositivo a través de plugin.
Cómo funciona Cordova?
Pues basicamente tienes un fichero de configuración y unos comandos de shell, que en base a esa configuración generan el código fuente para que puedas compilarlo con los plugins que tu necesites para poder acceder a elementos del dispositivo.
Al final tienes que compilar el código, así que si vas a hacer la app para android, necesitas Android Studio, y si quieres hacer una App para iPhone, necesitas XCode y un Mac.
Comandos Cordova
# Añadir plataformas para las que quieres generar código >cordova platform add android # Generar código en /platfomrs en base al config.xml >cordova prepare # Compila y lanza el emulador de android cordova run --emulator android
config.xml
<?xml version='1.0' encoding='utf-8'?>
<!-- IMPORTANTE!!
El android-versionCode se tiene que cambiar cada vez q se firma en el store
y no puede ser anterior a uno que ya se haya subido.
-->
<widget
id="es.compania.nombre_app"
version="1.1.0"
android-versionCode="20"
ios-CFBundleVersion="1.1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:cdv="http://cordova.apache.org/ns/1.0"
>
<name>Nombre App en las Stores</name>
<description>
Mi App es la pera
</description>
<author email="desarrollo@desarrollador.com" href="https://compania.com">
Compania
</author>
<!-- ATENCIÓN !!! Ruta inicial del App -->
<content src="https://app.compania.es/"/>
<!-- Rutas a las que puede navegar -->
<allow-navigation href="*" />
<icon src="res/icon.png" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<!-- Cosas de Android -->
<platform name="android">
<allow-intent href="market:*" />
<resource-file src="google-services.json" target="app/google-services.json" />
<preference name="android-minSdkVersion" value="23" />
<preference name="android-targetSdkVersion" value="30" />
<splash src="res/screen/android/splash.png" />
<preference name="Orientation" value="portrait" />
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
<application android:allowBackup="false" />
</edit-config>
</platform>
<!-- Cosas de iOS -->
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<resource-file src="GoogleService-Info.plist" />
<preference name="Orientation" value="portrait" />
<preference name="DisallowOverscroll" value="true" />
<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
<hook src="scripts/fixIosIcons.sh" type="after_platform_add" />
<config-file target="*-Info.plist" parent="UIStatusBarHidden">
<true/>
</config-file>
<config-file target="*-Info.plist" parent="UIViewControllerBasedStatusBarAppearance">
<false/>
</config-file>
</platform>
<hook src="scripts/fixIosIcons.sh" type="after_prepare" />
<engine name="android" spec="^9.0.0" />
<engine name="ios" spec="^6.1.1" />
<!-- Plugins que vamos a necesitar para acceder al las cosas del dispositivo -->
<plugin name="cordova-plugin-statusbar" spec="2.4.3" />
<plugin name="cordova-plugin-androidx" spec="^2.0.0" />
<plugin name="cordova-plugin-androidx-adapter" spec="^1.1.1" />
<plugin name="cordova-plugin-appversion" spec="^1.0.0" />
<plugin name="cordova-plugin-device" spec="^2.0.2" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<plugin name="cordova-plugin-ionic-webview">
<variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
</plugin>
<plugin name="cordova-plugin-ionic-keyboard" spec="2.0.5" />
<plugin name="cordova-clipboard" spec="~1.3.0" />
<plugin name="cordova-plugin-fingerprint-aio" spec="^3.0.1">
<variable name="FACEID_USAGE_DESCRIPTION" value=" " />
</plugin>
<plugin name="cordova-plugin-network-information" spec="2.0.2" />
<plugin name="cordova-plugin-networkinterface" spec="2.0.0" />
<plugin name="cordova-plugin-iroot" spec="2.0.2" />
<!-- <plugin name="cordova-plugin-advanced-http" spec="3.0.1" /> -->
<plugin name="cordova-plugin-advanced-http" spec="./plugin-custom/cordova-plugin-advanced-http-master" />
<plugin name="cordova-plugin-file" spec="6.0.2" />
<plugin name="cordova-plugin-proguard" spec="2.2.0" />
<plugin name="cordova-plugin-buildinfo" spec="4.0.0" />
<plugin name="cordova-plugin-inappbrowser" spec="4.0.0" />
<plugin name="@havesource/cordova-plugin-push" spec="2.0.0"></plugin>
</widget>