Programación de Apps con Android – Avanzado por Jorge Pintado

26
 Android Tips & Tricks

description

 

Transcript of Programación de Apps con Android – Avanzado por Jorge Pintado

Page 1: Programación de Apps con Android – Avanzado por Jorge Pintado

   

AndroidTips & Tricks

Page 2: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Código oculto de Android

Page 3: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Qué es?

En Android encontramos clases, constantes y funciones marcadas con @hide

Page 4: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Qué significa?

En el desarrollo:

● Android SDK: android.jar● Elimina todos los @hide e internal

En la compilación:

●  Framework.jar●  Incluye los @hide e internal

Page 5: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Tamaño de la App

Page 6: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Qué es una app?

David Karlsson, Sony Ericsson software architect.

El APK es basicamente un zip con:

● Ficheros .dex (código, Dalvik Executable)● Recursos● Assets● Manifest

Page 7: Programación de Apps con Android – Avanzado por Jorge Pintado

   

●¿Por qué?

● Es interesante reducir el tamaño de la app:

● Memoria del teléfono

● Limitación de Google Play

Page 8: Programación de Apps con Android – Avanzado por Jorge Pintado

   

●¿Cómo?

● Ofuscación de código● Eliminar información de Debug

● Generalmente información no utilizada después del desarrollo

● Información que no se visualiza● Se recomienda eliminarla

Page 9: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (II)

● Eliminar información de Debug:

● Solución 1:

static final debug = false;

if (debug) {

          Log.v(TAG, “Debug …”);

}

Page 10: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (III)

● Eliminar información de Debug:● ¿Solución 2?:

public void myDebugPrint(String s) {

    if (Debug) {

              Log.v(TAG, s);

    }

}

myDebugPrint(“debug”);

Page 11: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (IV)

● Formato multimedia● Imágenes:

– PNG (optimizado si es posible)– JPEG

● Audio:– AAC mejor que Ogg Vorbis o mp3

● Vídeo:– H264 AVC– Resolución menor que el tamaño de la pantalla

Page 12: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (V)

● 9patch● Ahorro de repetición de imágenes

Page 13: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Código fuente Android

Page 14: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (V)

● Open Source   código fuente de las apps también →   disponible

● Analizar el código

● Reutilización de interfaces (layout)

● Diseño de aplicaciones del sistema

Page 15: Programación de Apps con Android – Avanzado por Jorge Pintado

   

● http://source.android.com/source/downloading.html

● https://github.com/android

Page 16: Programación de Apps con Android – Avanzado por Jorge Pintado

   

¿Cómo? (VI)

● Eliminar recursos no utilizados

● Eliminar código repetido

Page 17: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Instalar en la tarjeta SD

Page 18: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Procedimiento

● Incluir en el manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" ... >

Page 19: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Soporte para múltiples APKen Google Play

Page 20: Programación de Apps con Android – Avanzado por Jorge Pintado

   

● Tendremos SOLO una entrada en Google Play para nuestra aplicación

● Diferentes dispositivos descargan diferentes APK.

● Solo tenemos una descripción de producto (iconos, capturas, descripción, etc).

● Si actualizamos una versión de la aplicación para un grupo concreto, Android actualizará la aplicación en los usuarios concretos.

Product details    Edit Application    Upload new APK→ →

Page 21: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Aplication Context

Page 22: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Test

● ¿Esto funciona?

Intent i = new Intent(this, MyNewClass.java);

● ¿Existe algún problema?

Page 23: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Test 2

● ¿Esto funciona?

Context mContext = getApplicationContext();

Intent i = new Intent(mContext, MyNewClass.java);

● ¿Existe algún problema?

Page 24: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Solución

● GetApplicationContext es la forma adecuada de acceder al Context de la aplicación:

● Evita problema de pérdida de memoria

● Una referencia a una Activity debe tener el mismo ciclo de vida que la Activity.

● Utilicemos el concepto “Contexto de la aplicación” en lugar de “Contexto de la Activity”

Page 25: Programación de Apps con Android – Avanzado por Jorge Pintado

   

Realidad Aumentada

Page 26: Programación de Apps con Android – Avanzado por Jorge Pintado

   

● Layar:

http://www.layar.com/documentation/player/android­ shortcut­generator/

● ARViewer:

http://www.libregeosocial.org/node/24