Programación de Apps con Android – Avanzado por Jorge Pintado
-
Upload
congresoweb -
Category
Documents
-
view
3.238 -
download
2
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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/1.jpg)
AndroidTips & Tricks
![Page 2: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/2.jpg)
Código oculto de Android
![Page 3: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/3.jpg)
¿Qué es?
En Android encontramos clases, constantes y funciones marcadas con @hide
![Page 4: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/4.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/5.jpg)
Tamaño de la App
![Page 6: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/6.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/7.jpg)
●¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/8.jpg)
●¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/9.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/10.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/11.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/12.jpg)
¿Cómo? (V)
● 9patch● Ahorro de repetición de imágenes
![Page 13: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/13.jpg)
Código fuente Android
![Page 14: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/14.jpg)
¿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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/15.jpg)
● http://source.android.com/source/downloading.html
● https://github.com/android
![Page 16: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/16.jpg)
¿Cómo? (VI)
● Eliminar recursos no utilizados
● Eliminar código repetido
![Page 17: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/17.jpg)
Instalar en la tarjeta SD
![Page 18: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/19.jpg)
Soporte para múltiples APKen Google Play
![Page 20: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/20.jpg)
● 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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/21.jpg)
Aplication Context
![Page 22: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/25.jpg)
Realidad Aumentada
![Page 26: Programación de Apps con Android – Avanzado por Jorge Pintado](https://reader034.fdocuments.co/reader034/viewer/2022051313/54950a6eb47959474d8b4c4e/html5/thumbnails/26.jpg)
● Layar:
http://www.layar.com/documentation/player/android shortcutgenerator/
● ARViewer:
http://www.libregeosocial.org/node/24