domingo, 25 de julio de 2010

Rootear htc hero en 1.5 o 2.1

Por fin he conseguido rootear la htc hero :D, ha sido un proceso complicado que me ha llevado 24 h literalmente. Recomiendo que se lea de cabo a rabo antes de empezar, paso a describirlo por si a alguien le viene bien.

Posibles estados:

htc orange 1.5
htc orange 2.1

Si tienes una 2.1 tendrás que crear una goldcard para volver a la versión 1.5

Aquí teneis las instrucciones de cómo hacerlo, importante para evitar problemas utilizar como lector de tarjetas el propio móvil.

http://www.htcmania.com/showthread.php?t=89723


Seguir por aqui si tienes la 1.5

Una vez que está en versión 1.5, seguimos el tutorial para sacar una copia de seguridad e instalar un recovery que nos abrirá la puerta a upgradear después el dispositivo a la versión 2.1

De este tutorial debemos seguir únicamente la parte de Custom recovery
http://www.htcmania.com/showthread.php?t=87173

Ahora necesitaremos descargar la actualización a 2.1 que podemos encontrar en un post de xda developers
http://forum.xda-developers.com/showthread.php?t=712743

Esta actualización tiene la peculiaridad de no tener radio, así es que necesitaremos una radio también,

http://www.htcmania.com/showthread.php?t=66838

Puedes descargar la que tu quieras. Reiniciamos el dispositivo en modo recóvery (encender+home) y seleccionar en Flash zip from sdcard seleccionamos primero la actualización de xda developers y luego la radio de htcmania, reiniciamos el móvil y volverá a entrar en modo recóvery, una vez que termina de limpiar la caché, vuelves a reiniciar el móvil.

Ahora tenemos la versión 2.1, pero con el recovery 1.6.2, con lo que volvemos a reiniciar en modo recovery (encender + home) y seguimos esta parte del tutorial de htcmanía que paso a fusilar directamente para eliminar las partes innecesarias:


Este tutorial es para hacer lo mismo que en al paso anterior, pero a través del PC.
1.-Descarga el HTCSync e instálalo.
2.-Descarga el SDK de Android.
3.-Descomprime el archivo en la carpeta HERO en la raiz del disco duro.
4.-Descarga el SuperUser (requiere registro).
5.-Copia el SuperUser en la carpeta tools del SDK (C:/HERO/SDK/android-sdk-windows/tools). Si estácomprimido, descomprímelo.

Reinicia en modo Recovery (encender + home) con el RA v1.6.2
6.-Ahora ejecutamos los siguientes comandos en cmd:
Código:

adb shell mount /system
adb push su /system/bin/
adb shell chmod 4755 /system/bin/su
adb push Superuser.apk /system/app/
adb shell reboot


Ya tenemos la versión 2.1 rooteada perfectamente.

Disclaimer:

No me hago responsable si tras seguir este manual obtienes un precioso ladrillo.

domingo, 11 de julio de 2010

Solved Unknown device

Ayer pasé de htc, de orange y de todo el mundo y actualicé el htc hero a Android 2.1. Hasta ahí todo más o menos bien, el problema llegó cuando intenté depurar una aplicación en em móvil.

El comando adb logcat se quedaba waiting for devices eternamente, y el resto de los comandos devolvían el mensaje "error: insufficient permissions for device".

Solución, reiniciar el servidor adb, la comúnmente llamada solución del informático :)


adb kill-server
sudo adb start-server
adb devices


E voila, ya tenemos de nuevo el dispositivo listo para seguir depurando

miércoles, 7 de julio de 2010

Android on orientation change

Existe un comportamiento en Android que resulta un poco desconcertante si no te ha sucedido nunca, tu estás programando una pantallita tranquilamente y resulta que cuando cambias la orientación del móvil se pierde toda la información insertada :/, un poco de investigación te lleva a la conclusión de que se está llamando al onStop, onDestroy y onCreate de la actividad, WTF! pero si yo sólo he girado la pantalla del móvil ...

Por lo visto es el comportamiento normal en Android y tiene una solución cuya complejidad depende de lo complicada que sea tu interface. La solución pasa por utilizar dos métodos de la clase Activity:

onRetainNonConfigurationInstance: Método que se llama cuando la actividad se está destruyendo, su objetivo es recopilar la información que el usuario haya insertado o que sea costosa de volver a recuperar. Este método debe estár declarado y devolverá un Object con la información descrita.

getLastNonConfigurationInstance Este otro método debe ser llamado en la inicialización de la actividad, lo suyo es en el onCreate, devolverá el Object que retornó el método anterior y tendremos que volver a cargar esa información en la Actividad manualmente.

Es un proceso sencillo, pero hay que conocerlo :)