TecnologíaParte 2
Curso de Formación en MovilidadJulio 2013
1
Qué veremosParte 2
Personalización
ROMsBecoming root
CyanogenMod y Paranoid AndroidMisc
MonitorizaciónBateríaBackups
2
Personalización
3
Terminología
ROM Firmware, imagen del SO
Flashear Instalar el firmware
Rootear Obtener permisos de usuario privilegiado
4
Terminología
Bootloader Programa de arranque del SO
Desbloquear bootloader Permitir instalar firmware no oficial
5
ROM¿Qué es?
Versión de Android modificadaAndroid es un SO móvil de propósito generalLas versiones modificadas buscan
• Explotar al máximo las capacidades de dispositivos
• Mejorar versiones oficiales
• Personalizar el terminal
6
ROMInstalación
Flashear es instalar una ROMDos etapas
1.Modo fastboot para instalar la imagen de recuperacióna.Desbloquear bootloader
2.Modo recovery para instalar la ROM
7
ROMInstalación
fastboot y recovery
Conectar por USBReiniciar dispositivo en modo fastboot$ adb reboot bootloaderInstalar imagen de recuperación$ fastboot flash recovery fichero.imgReiniciar dispositivo en modo recuperación$ fastboot boot fichero.img
8
Kernel
Una ROM es el binario del sistema operativo, incluyendo el kernel compilado
Mismo diseño interno que LinuxEl kernel gestiona el hardwarePodemos actualizar el kernel sin reinstalar el sistema
9
Kitchens
¿Necesito compilar y generar mi propia ROM para personalizar mi dispositivo con Android?Las kitchens parten de una ROM básica que podemos personalizar :
•Pantalla de inicio
•Apps incluídas
•Ajustes varios rendimiento
10
CyanogenMod
ROM que incrementa rendimiento y estabilidadMuy popular por su alto grado de personalizaciónSoporta actualmente +70 dispositivos
11
CyanogenMod
Algunas features:•Revocar permisos de apps•Tethering por USB, WiFi o Bluetooth•Optimizado uso de batería•CPU overclocking
12
Paranoid Android
Permite ubicar y dimensionar tus apps libremente
13
Root
Rootear
•Conseguir permisos de super usuario (root)
•Acceder a funciones protegidas¡Cuidado!Un móvil rooteado puede perder la garantía (según fabricante)
14
Root
Podemos modificar ciertos ajustes sin tener que cambiar de ROM:
• Asignar/Revocar permisos de apps
• Habilitar tethering
• Acceso total al sistema de ficheros
CyanogenMod rootea el dispositivo en el proceso de instalación
15
Root¿Cómo?
El método es muy dispar entre dispositivosBásicamente, se sustituye un programa (su) para ejecutar procesos como super usuario
El original sólo ejecuta sin privilegios
16
Sandboxing
Todas las apps en iOS y Android están sandboxed
Tienen acceso sólo a los recursos que el sistema asigneNo tienen acceso a recursos utilizados por otras apps
Único punto de entrada: app schemas
17
Sandboxing
Disco, memoria, procesos, etc, pertenecen a cada app, y no los comparten¡Atención!Si Android está rooted, cualquier app podría utilizar esos permisos para “hacer el mal”
18
Optimización y Rendimiento
19
Optimización y Rendimiento
“Mejores prácticas”•ROMs optimizadas (uso personal)•Librerías proyecto•Instalar apps “fiables”•Recomendaciones fabricante
20
Optimización y RendimientoDesarrollo
iOS
Xcode 5 Instruments
21
Optimización y RendimientoDesarrollo
Android
Android Debug Monitor
22
Optimización y RendimientoDesarrollo
Android
Little Eye
Por app: consumo de batería, tráfico de red, uso de memoria y CPU...
23
Monitorización
24
MonitorizaciónInfo del dispositivo
iOS
Settings > General > About¿UDID?
25
MonitorizaciónInfo del dispositivo
iOS
Xcode Organizer
26
MonitorizaciónInfo del dispositivo
Android
Settings > About PhoneApps en Google Play (consultan por API info del sistema)
27
MonitorizaciónBatería
iOS
Mediante appsNo hay forma “oficial” de saber el nivel de batería más allá del % global
28
MonitorizaciónBatería
Android
Battery Doctor
Consumo de batería por appEstimación tiempo restante por tipo de usoEstimación tiempo extra desactivando submódulosNotificación iniciar ciclo de carga
29
MonitorizaciónTráfico de red
30
MonitorizaciónLogs
Es necesario•Xcode•Android SDK
31
MonitorizaciónLogs
iOS
Xcode Organizer•Console•Device Logs
32
MonitorizaciónLogs
iOS
Xcode Organizer Console→ Mensajes del sistema
Jul 3 18:32:56 kernel[0] <Debug>: ALS: AppleARMBacklight::handleMessageGated - framebufferState -> 1Jul 3 18:32:56 kernel[0] <Debug>: ALS: AppleARMBacklight::setBacklightEnableGated 1 (set level to 0x392)Jul 3 18:32:56 CLTM[14] <Error>: CLTM: resetting temps: now = 1372869176, last update = 1372869057Jul 3 18:32:57 wifid[15] <Notice>: WiFi:[394561977.656129]: WoW is Enabled, 1 WoW ClientsJul 3 18:32:57 kernel[0] <Debug>: AppleD1881PMUPowerSource: AppleUSBCableDetect 1Jul 3 18:32:57 kernel[0] <Debug>: AppleD1881PMUPowerSource: AppleUSBCableType USBHostJul 3 18:32:58 wifid[15] <Notice>: WiFi:[394561978.160024]: External power source attachedJul 3 18:32:58 lockdownd[52] <Notice>: 3b64918c pairing_host_connected: connectionCount now 3Jul 3 18:32:59 lockdownd[52] <Notice>: 00281000 special_case_get: MGCopyAnswer(kMGQSDIOProductInfo) returned NULLJul 3 18:32:59 lockdownd[52] <Notice>: 00281000 special_case_get: MGCopyAnswer(kMGQSDIOManufacturerTuple) returned NULLJul 3 18:32:59 lockdownd[52] <Notice>: 00281000 special_case_get: MGCopyAnswer(kMGQBasebandBoardSnum) returned NULLJul 3 18:32:59 lockdownd[52] <Notice>: 00281000 special_case_get: MGCopyAnswer(kMGQWirelessBoardSnum) returned NULLJul 3 18:32:59 ptpd[1016] <Error>: ptpd: startResponderJul 3 18:33:00 ptpd[1016] <Notice>: PTP interface has been activated at high speed.Jul 3 18:33:06 Sergis-iPhone profiled[1025] <Notice>: (Note ) profiled: Service starting...Jul 3 18:33:06 Sergis-iPhone kernel[0] <Debug>: 012767.825601 wlan.A[2937] AppleBCMWLANNetManager::updateLinkQualityMetrics(): Report LQM to User Land 50, fAverageRSSI -71Jul 3 18:33:06 Sergis-iPhone backupd[1024] <Warning>: INFO: Scheduling next backup at 7/4/13, 3:29:45 AMJul 3 18:33:07 Sergis-iPhone backboardd[28] <Notice>: ALS: SetDisplayFactor: factor=0.0000Jul 3 18:33:07 Sergis-iPhone kernel[0] <Debug>: AppleMultitouchN1SPI: updating power statisticsJul 3 18:33:07 Sergis-iPhone backboardd[28] <Notice>: MultitouchHID: detection mode: 3->255Jul 3 18:33:08 Sergis-iPhone kernel[0] <Debug>: ALS: AppleARMBacklight::setBacklightEnableGated 0 (set level to 0x1f7)Jul 3 18:33:08 Sergis-iPhone backboardd[28] <Notice>: Posting 'com.apple.iokit.hid.displayStatus' notifyState=0Jul 3 18:33:08 Sergis-iPhone wifid[15] <Notice>: WiFi:[394561988.447980]: Device display is OFFJul 3 18:33:08 Sergis-iPhone kernel[0] <Debug>: ALS: AppleARMBacklight::handleMessageGated - framebufferState -> 0Jul 3 18:33:17 Sergis-iPhone profiled[1025] <Notice>: (Note ) profiled: Service stopping.Jul 3 18:33:25 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562005.352055]: Client networkd set type to normal applicationJul 3 18:33:25 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562005.356643]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd Jul 3 18:33:26 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562006.091701]: Client networkd set type to background applicationJul 3 18:33:26 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562006.092821]: BG Application: Not Present, BG Daemon: Present. Daemons: networkd apsd Jul 3 18:33:26 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562006.093580]: Already connected to Dormirdcine.Jul 3 18:33:31 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562011.840759]: Client networkd set type to normal applicationJul 3 18:33:31 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562011.841843]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd Jul 3 18:33:59 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562039.899209]: WoW is Enabled, 1 WoW ClientsJul 3 18:33:59 Sergis-iPhone kernel[0] <Debug>: 012818.052047 wlan.A[2938] AppleBCMWLANNetManager::updateLinkQualityMetrics(): Report LQM to User Land 100, fAverageRSSI -70Jul 3 18:34:01 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562041.400302]: Creating client for "itunesstored"Jul 3 18:34:01 Sergis-iPhone itunesstored[1027] <Warning>: LaunchServices: Registering as observer with lsdJul 3 18:34:01 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562041.763969]: Client itunesstored set type to background applicationJul 3 18:34:01 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562041.764812]: BG Application: Not Present, BG Daemon: Present. Daemons: itunesstored apsd Jul 3 18:34:01 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562041.765639]: Already connected to Dormirdcine.Jul 3 18:34:01 Sergis-iPhone itunesstored[1027] <Warning>: iTunes Store environment is: ST11Jul 3 18:34:04 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562044.084790]: Client networkd set type to background applicationJul 3 18:34:04 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562044.086342]: BG Application: Not Present, BG Daemon: Present. Daemons: itunesstored apsd networkd Jul 3 18:34:04 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562044.087068]: Already connected to Dormirdcine.Jul 3 18:34:05 Sergis-iPhone securityd[85] <Error>: OCSPResponse: now > latestNextUpdateJul 3 18:34:05 Sergis-iPhone securityd[85] <Error>: OCSPResponse: now > latestNextUpdateJul 3 18:34:07 Sergis-iPhone securityd[85] <Error>: OCSPResponse: now + maxAge > latestNextUpdate, using latestNextUpdateJul 3 18:34:07 Sergis-iPhone securityd[85] <Error>: OCSPResponse: now + maxAge > latestNextUpdate, using latestNextUpdateJul 3 18:34:14 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562054.825934]: Client itunesstored set type to normal applicationJul 3 18:34:14 Sergis-iPhone wifid[15] <Notice>: WiFi:[394562054.827106]: BG Application: Not Present, BG Daemon: Present. Daemons: apsd networkd
33
MonitorizaciónLogs
iOS
Xcode Organizer Device Logs→ Trazas de error por app
34
MonitorizaciónLogs
Android
$ adb logcat
35
MonitorizaciónLogs
Android
Eclipse, Android Studio
36
Caso prácticoAtención al usuario
37
Backups
MatizamosBackup de datos de aplicacionesBackup de sistema: apps instaladas, configuración... todo menos contenido tarjeta SD
38
BackupsiOS
iTunes
39
BackupsAndroid
NANDroidEs un “standard” para el formato de backupsBootloader en modo recuperaciónOnline Nandroid BackupApp para evitar entrar en recovery mode
Necesitas root y BusyBox (utilidades extra)
40
BackupsAndroid
Helium
No necesitas rootSólo backups de apps, SMS y registro llamadasBackup en PC y en Dropbox/Box/Google Drive (sólo versión de pago)
41
BackupsAndroid
Titanium Backup
Backups completosNecesitas root
42
Backups
¿Tiene sentido realizar backups de sistema completos?¿Backups sin acceso root?¿Es escalable?
43
AntivirusiOS
44
AntivirusAndroid
45