- Presentación.
Una vez que hemos realizado nuestra aplicación, es interesante subirla a la Play de Google para que cualquier persona interesada la pueda bajar.
Aquí voy a comentar algunas ideas para subir la aplicación:
- La Play de Google (antes se llamaba Market) es una web desde donde podemos subir/bajar aplicaciones gratuitas y de pago para nuestro móvil y nuestra tablet.
- La aplicación que hemos realizado se encuentra en: C:\Android\Formulario\Objetcs y tiene extensión apk: formulario.apk
- Si el apk tiene de nombre algo así... formulario_DEBUG.apk, debes compilarla de nuevo sin el _DEBUG. Ver como quitar el _DEBUG.
- Para poder subir aplicaciones al Play de Google debemos registrarnos como "Desarrollador". Esto cuesta unos 25 $ , puedes pagar por tarjeta de crédito.
(Aclaración: son 25 $ para siempre. NO son 25 $ cada año)
Esta es la página de registro: https://play.google.com/apps/publish/v2/signup/
- Cuando subas tus aplicaciones puedes establecer que se bajen gratuitamente o que sean de pago.
- Vamos a ver cómo podemos preparar nuestra aplicación de tres maneras:
1.- Mediante los menús de B4A.
2.- Mediante el programa AppToMarket.
3.- Mediante los comandos Apktool, keytool, jarsingning, zipaligning. Esto lo veremos en otro tutorial.
_____________________________________________________
1.- Preparación de la aplicación a subir mediante B4A.
1.- Debes subir dos gráficos de captura de pantalla y un icono.
- Para subir tu aplicación es necesario que tengas al menos dos Capturas de pantalla de la aplicación (ScreenShots), es decir dos gráficos (al ser posible diferentes) de la pantalla de tu aplicación. Esto es para que los usuarios vean de qué trata tu aplicación.
Estos archivos gráficos deben ser PNG o JPEG (no alfa) de 24 bits, de 320 x 480, de 480 x 800 o de 480 x 854.
Puedes capturar la pantalla pulsando la tecla "Print Screen" o "Impr Pantalla" y luego mediante un editor gráfico como el MSPaint, recortar la parte de la pantalla.
- El Basic4Android tiene una herramienta para Capturar directamente la pantalla.
Ejecutamos la aplicación qie estamos realizando y luego vamos a...
Tools / Take Screenshot
Luego saldrá otra ventana, pulsamos en Take Picture y luego guardaremos la imagen .png en una carpeta.
Icono de la aplicación
- También debe subir un icono igual que el que utiliza la aplicación, ese icono debe ser un archivo PNG (con alpha) de 32 bits y de 512 x 512.
Mediante esta página puedes adaptar el icono: Launcher Icon Generator.
- Todo referente a los gráficos lo puedes encontrar en esta página: Recursos gráficos para tu aplicación.
2.- Adaptar el archivo AndroidManifest.xml
Otra cosa que debemos hacer es personalizar el archivo AndroidManifest.xml, este archivo se encuentra en la misma carpeta donde esté la aplicación, en nuestro caso en
C:\Android\Formulario\Objetcs\AndroidManifest.xml
en este archivo se encuentra la orientación de la aplicación, si aparecerá o no la barra de título, el nombre del empaquetado, si se cargara en la memoria externa SD Card, la versión...
Basic4Android utiliza una herramienta para establecer esas características automáticamente en el archivo AndroidManifest.xml
Vamos a: Proyect y actuamos sobre...
Activity Properties (pantalla completa, incluir título)
Choose Icon (elegir icono)
Package Name (debe ser de la forma com.formulario)
Application Label (etiqueta)
Application Version (Versión)
Orientations Supported (orientación de la pantalla horizontal, vertical o ambas)
NOTA: en las nuevas versiones de Basic4Android, ha cambiado esta pantalla de menús, ahora algunas propiedades se establecen en la zona de Region, como indica el gráfico de abajo.
3.- Firmar la aplicación (signed) con una clave (clave.keystore).
(Firma tu aplicación)
Debemos firmar (Sign) nuestra aplicación con una clave para poderla subir a Play de Google.
- Es muy importante guardar el archivo de firma (clave.keystore.ks) ya que si queremos modificar nuestra aplicación para subir una nueva versión, es necesaria la clave con la que se subió, si perdemos ese archivo de clave, no podremos actualizar esa aplicación que tenemos subida al Play, tendremos que subirla con otro nombre.
Basi4Android también tiene una herramienta para crear el archivo keystore de firma.
Para crear un archivo de clave, vamos a: Tools / Private Sign Key.
Escribimos nuestros datos y el nombre de una carpeta y archivo donde se guardará la keystore.
- Se puede hacer una firma (Sign) para cada aplicación, pero es más eficiente tener una firma y aplicársela a todas nuestras aplicaciones, el archivo miclave.keystore lo podemos guardar como oro en paño en cualquier carpeta, pero no perderlo, si lo perdemos no podremos actualizar las aplicaciones que tengamos subida al Play de Google, tendremos que subirlas con otro nombre.
- En este tutorial se explica la herramienta anterior: Tutorial de Basic4Android.
4.- Compilar la aplicación.
Una vez que tengamos configurado el archivo AndroidManifest y el archivo de clave, como hemos visto anteriormente, compilamos el programa mediante:
Tools / Compile & Run
Fíjate que indica que:
se está compilando con Java
se está empaquetando
se está firmando
se está creando el archivo ZipAlign
pasa al emulador.
El archivo que obtenemos en:
C:\Android\Formulario\Objetcs\formulario.apk
formulario.apk es el que tenemos que enviar al Play de Google (fijate en la fecha y hora de este archivo, verás que es el último que has realizado).
Intenta no jugar mucho con la clave (Tools / Private Sign Key), crea una, la guardas en una carpeta y déjala ahí para todos los programas que hagas. Realiza copia de seguridad de esa clave, se suele llamar clave.keystore
5.- Subir a Play de Google
Cuando tengas preparado las dos capturas de pantalla, el icono, las carácterísticas de la aplicación y la aplicación firmada y compilada, deberás entrar en tu cuenta de Play de Google y subirlo en los apartados correspondientes.
En realidad no es tan complicado como parece, puedes entrar en su sesión de desarrollador de la Play y simplemente seguir los pasos. Muchas capturas de pantalla y redimensionado, se puede hacer simplemente con el MsPaint.
- Aquí tienes un tutorial del mismo proceso con App inventor.
__________________________________
Enlaces interesantes
Enlace al tutorial de Google.
Google Play para desarrolladores.
Enlace al Wiki de B4A.
ZipAlign.
Otra aplicación para preparar el archivo de subida: Marketizer
Otro sitio para subir las aplicaciones: Amazon App Store. Cuesta 99 $ / año, el primer año gratis.
Otro sitio para subir las aplicacones: Slideme. Desarrollador gratis.
_________________________________
2.- Otra forma de hacerlo. AppToMarket.
Otra forma de preparar una aplicación (firmarla, personalizar el Manifest y crear el ZipAlign) para subirla al Play de Google es mediante el programa AppToMarket.
- Puedes bajar la última versión de... AppToMarket
- Es un programa que no se instala simplemente lo bajamos, lo descomprimimos y pulsamos en AppToMarket_vxx.jar
Nos creamos una clave, escribimos la dirección donde se va a guardar y su nombre, en mi caso:
C:\Android\keystore.ks
Pulsamos en 2> De/Re compile and wrap-up, mediante el botón Browse buscamos el archivo que queremos subir.
(En este caso C:\Users\juan\.......\myApks\test1.apk)
Mediante los desplegables elegimos las características de la aplicación.
(Version, forma de pantalla, orientación, nombre de la aplicación, si se instalará en la SD Card,...)
Luego pulsamos en el botón 1> Decompile.
Después en botón de abajo 2> Update Manifiest.
Luego en 3> Edit Manifest (Podemos guardar y consultar el archivo AndroidManifest.xml)
Después en 3> Create New apk
Se nos creará un archivo de la forma: test1_new.apk
Seguidamente lo firmamos pulsando en 4> Sign
Nos informará que la aplicación ha sido firmada (signed).
Lo verificamos pulsando en 5> Verify
Luego en 6> Zip Align
Nos indicará que se ha creado la aplicación test1_new_zipAlign.apk
Ese será el archivo que debemos subir al Play de Google.
(Algunas de las versiones de este programa dan problemas en los Windows de 64 bits con los Javas, es cosa de probar.)
__________________________________
- Notificaciones de actualización.
Mediante Google Cloud Message (GCM) podemos enviar mensajes a los que han instalado nuestra aplicación para informarles que ésta ha sido actualizada.
http://www.basic4ppc.com/android/forum/threads/android-push-notification-gcm-framework-and-tutorial.19226/#content
http://www.basic4ppc.com/android/forum/threads/simple-push-framework.35635/
__________________________________
- Publicidad en tus aplicaciones.
Para poner publicidad las marcas más reconocidas son:
- Admod de Google, es el más utilizado. Ver tutorial de Admob.
- LeadBolt.
- Millennialmedia.
- AirPush.
- MobFox.
__________________________________
- Algunas opciones del archivo AndroidManifest.xml
Solo permire la instalación en la memoria interna, no en el SD Card
android : installLocation = "internalOnly"
Establecer la posición horizontal de la pantalla
SetActivityAttribute(Main, android:screenOrientation, "portrait")
Podemos estableces estos permisos mediante Edit Manifest:
AddPermission(android.permission.ACCESS_CHECKIN_PROPERTIES)
AddPermission(android.permission.ACCESS_COARSE_LOCATION)
AddPermission(android.permission.ACCESS_FINE_LOCATION)
AddPermission(android.permission.ACCESS_LOCATION_EXTRA_COMMANDS)
AddPermission(android.permission.ACCESS_MOCK_LOCATION)
AddPermission(android.permission.ACCESS_NETWORK_STATE)
AddPermission(android.permission.ACCESS_SURFACE_FLINGER)
AddPermission(android.permission.ACCESS_WIFI_STATE)
AddPermission(android.permission.ACCOUNT_MANAGER)
AddPermission(android.permission.ADD_VOICEMAIL)
AddPermission(android.permission.AUTHENTICATE_ACCOUNTS)
AddPermission(android.permission.BATTERY_STATS)
AddPermission(android.permission.BIND_ACCESSIBILITY_SERVICE)
AddPermission(android.permission.BIND_APPWIDGET)
AddPermission(android.permission.BIND_DEVICE_ADMIN)
AddPermission(android.permission.BIND_INPUT_METHOD)
AddPermission(android.permission.BIND_REMOTEVIEWS)
AddPermission(android.permission.BIND_TEXT_SERVICE)
AddPermission(android.permission.BIND_VPN_SERVICE)
AddPermission(android.permission.BIND_WALLPAPER)
AddPermission(android.permission.BLUETOOTH)
AddPermission(android.permission.BLUETOOTH_ADMIN)
AddPermission(android.permission.BRICK)
AddPermission(android.permission.BROADCAST_PACKAGE_REMOVED)
AddPermission(android.permission.BROADCAST_SMS)
AddPermission(android.permission.BROADCAST_STICKY)
AddPermission(android.permission.BROADCAST_WAP_PUSH)
AddPermission(android.permission.CALL_PHONE)
AddPermission(android.permission.CALL_PRIVILEGED)
AddPermission(android.permission.CAMERA)
AddPermission(android.permission.CHANGE_COMPONENT_ENABLED_STATE)
AddPermission(android.permission.CHANGE_CONFIGURATION)
AddPermission(android.permission.CHANGE_NETWORK_STATE)
AddPermission(android.permission.CHANGE_WIFI_MULTICAST_STATE)
AddPermission(android.permission.CHANGE_WIFI_STATE)
AddPermission(android.permission.CLEAR_APP_CACHE)
AddPermission(android.permission.CLEAR_APP_USER_DATA)
AddPermission(android.permission.CONTROL_LOCATION_UPDATES)
AddPermission(android.permission.DELETE_CACHE_FILES)
AddPermission(android.permission.DELETE_PACKAGES)
AddPermission(android.permission.DEVICE_POWER)
AddPermission(android.permission.DIAGNOSTIC)
AddPermission(android.permission.DISABLE_KEYGUARD)
AddPermission(android.permission.DUMP)
AddPermission(android.permission.EXPAND_STATUS_BAR)
AddPermission(android.permission.FACTORY_TEST)
AddPermission(android.permission.FLASHLIGHT)
AddPermission(android.permission.FORCE_BACK)
AddPermission(android.permission.GET_ACCOUNTS)
AddPermission(android.permission.GET_PACKAGE_SIZE)
AddPermission(android.permission.GET_TASKS)
AddPermission(android.permission.GLOBAL_SEARCH)
AddPermission(android.permission.HARDWARE_TEST)
AddPermission(android.permission.INJECT_EVENTS)
AddPermission(android.permission.INSTALL_LOCATION_PROVIDER)
AddPermission(android.permission.INSTALL_PACKAGES)
AddPermission(android.permission.INTERNAL_SYSTEM_WINDOW)
AddPermission(android.permission.INTERNET)
AddPermission(android.permission.KILL_BACKGROUND_PROCESSES)
AddPermission(android.permission.MANAGE_ACCOUNTS)
AddPermission(android.permission.MANAGE_APP_TOKENS)
AddPermission(android.permission.MASTER_CLEAR)
AddPermission(android.permission.MODIFY_AUDIO_SETTINGS)
AddPermission(android.permission.MODIFY_PHONE_STATE)
AddPermission(android.permission.MOUNT_FORMAT_FILESYSTEMS)
AddPermission(android.permission.MOUNT_UNMOUNT_FILESYSTEMS)
AddPermission(android.permission.NFC)
AddPermission(android.permission.PERSISTENT_ACTIVITY)
AddPermission(android.permission.PROCESS_OUTGOING_CALLS)
AddPermission(android.permission.READ_CALENDAR)
AddPermission(android.permission.READ_CALL_LOG)
AddPermission(android.permission.READ_CONTACTS)
AddPermission(android.permission.READ_EXTERNAL_STORAGE)
AddPermission(android.permission.READ_FRAME_BUFFER)
AddPermission(android.permission.READ_HISTORY_BOOKMARKS)
AddPermission(android.permission.READ_INPUT_STATE)
AddPermission(android.permission.READ_LOGS)
AddPermission(android.permission.READ_PHONE_STATE)
AddPermission(android.permission.READ_PROFILE)
AddPermission(android.permission.READ_SMS)
AddPermission(android.permission.READ_SOCIAL_STREAM)
AddPermission(android.permission.READ_SYNC_SETTINGS)
AddPermission(android.permission.READ_SYNC_STATS)
AddPermission(android.permission.READ_USER_DICTIONARY)
AddPermission(android.permission.REBOOT)
AddPermission(android.permission.RECEIVE_BOOT_COMPLETED)
AddPermission(android.permission.RECEIVE_MMS)
AddPermission(android.permission.RECEIVE_SMS)
AddPermission(android.permission.RECEIVE_WAP_PUSH)
AddPermission(android.permission.RECORD_AUDIO)
AddPermission(android.permission.REORDER_TASKS)
AddPermission(android.permission.RESTART_PACKAGES)
AddPermission(android.permission.SEND_SMS)
AddPermission(android.permission.SET_ACTIVITY_WATCHER)
AddPermission(android.permission.SET_ALARM)
AddPermission(android.permission.SET_ALWAYS_FINISH)
AddPermission(android.permission.SET_ANIMATION_SCALE)
AddPermission(android.permission.SET_DEBUG_APP)
AddPermission(android.permission.SET_ORIENTATION)
AddPermission(android.permission.SET_POINTER_SPEED)
AddPermission(android.permission.SET_PREFERRED_APPLICATIONS)
AddPermission(android.permission.SET_PROCESS_LIMIT)
AddPermission(android.permission.SET_TIME)
AddPermission(android.permission.SET_TIME_ZONE)
AddPermission(android.permission.SET_WALLPAPER)
AddPermission(android.permission.SET_WALLPAPER_HINTS)
AddPermission(android.permission.SIGNAL_PERSISTENT_PROCESSES)
AddPermission(android.permission.STATUS_BAR)
AddPermission(android.permission.SUBSCRIBED_FEEDS_READ)
AddPermission(android.permission.SUBSCRIBED_FEEDS_WRITE)
AddPermission(android.permission.SYSTEM_ALERT_WINDOW)
AddPermission(android.permission.UPDATE_DEVICE_STATS)
AddPermission(android.permission.USE_CREDENTIALS)
AddPermission(android.permission.USE_SIP)
AddPermission(android.permission.VIBRATE)
AddPermission(android.permission.WAKE_LOCK)
AddPermission(android.permission.WRITE_APN_SETTINGS)
AddPermission(android.permission.WRITE_CALENDAR)
AddPermission(android.permission.WRITE_CALL_LOG)
AddPermission(android.permission.WRITE_CONTACTS)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE )
AddPermission(android.permission.WRITE_GSERVICES )
AddPermission(android.permission.WRITE_HISTORY_BOOKMARKS)
AddPermission(android.permission.WRITE_PROFILE)
AddPermission(android.permission.WRITE_SECURE_SETTINGS)
AddPermission(android.permission.WRITE_SETTINGS)
AddPermission(android.permission.WRITE_SMS)
AddPermission(android.permission.WRITE_SOCIAL_STREAM)
AddPermission(android.permission.WRITE_SYNC_SETTINGS)
AddPermission(android.permission.WRITE_USER_DICTIONARY)