SlideShare una empresa de Scribd logo
Tips&Tricks	
  
                                                	
  

                      Boosting	
  your	
  	
  
                       productivity	
  
Fernando	
  García	
  Bernal	
  
@fegabe	
  	
  (twi$er,	
  linkedin,	
  github…)	
  
¿Quién	
  soy?	
  
•  ¿Dónde?	
  Malagueño	
  en	
  Barcelona	
  
•  ¿Qué?	
  Freelance	
  Android/iOS.	
  +3	
  años	
  experiencia	
  móvil	
  
Contenido	
  

• Mejorar	
  entorno	
  desarrollo	
  
• Librerías	
  fundamentales	
  
• Códigos	
  fuente	
  
• Patrones	
  de	
  diseño	
  
• Snippets	
  
Mejorar	
  entorno	
  
desarrollo	
  
android	
  x86	
  




                     www.android-­‐x86.org	
  
adb	
  (Android	
  Debug	
  Bridge)	
  
•  adb	
  devices	
  
•  adb	
  kill-­‐server	
  &&	
  adb	
  start-­‐server	
  
•  adb	
  push	
  /	
  pull	
  	
  
             	
  Recuperar	
  apk	
  (necesario	
  root!)	
  
             	
  $	
  adb	
  pull	
  /data/app/com.facebook.katana-­‐1.apk	
  
	
  
•  adb	
  install	
  /	
  uninstall	
  
•  adb	
  shell	
  
             	
  Acceso	
  SQLite	
  
             	
  $	
  adb	
  shell;	
  $	
  sqlite3	
  
	
  
•  Conexión	
  wireless	
  con	
  disposiKvo:	
  	
  
	
  	
  	
  	
   	
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  adbWireless	
  
Proxy	
  
•  Charles	
  Proxy	
  




	
  
•  ¿Cómo?	
  
   •  Configurar	
  Android	
  (si	
  lo	
  permite)	
  
   •  Usar	
  aplicación	
  (si	
  Kenes	
  móvil	
  rooteado)	
  
   •  Por	
  código:	
  

      DefaultHttpClient httpclient = new DefaultHttpClient();	
      HttpHost proxy = new HttpHost("1.2.3.4", 8080);	
      httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);	
  
Colored	
  logcat	
  




  	
  Permite	
  personaliza	
  la	
  salida	
  editando	
  el	
  fichero	
  ~/.logcat-­‐color	
  
             h$ps://github.com/marshall/logcat-­‐color.git	
  
Re-­‐aprender	
  Eclipse	
  
•  Técnica	
  milenaria	
  de	
  vista	
  dual	
  para	
  edición	
  de	
  interfaces	
  
    	
  
    	
  
    	
  
    	
  
    	
  
    	
  
    	
  




•  Otros	
  
   •  Refactors	
  
   •  expresiones	
  regulares	
  
   •  Shortcuts:	
  desplazar	
  líneas	
  
Librerías	
  
fundamentales	
  
ActionBarSherlock	
  
 h$ps://github.com/JakeWharton/AcKonBarSherlock	
  
     Implementación	
  AcKonBar	
  design	
  pa$ern	
  




                                              Jake
HoloEverywhere	
  
h$ps://github.com/ChristopheVersieux/HoloEverywhere.git	
  
           Holo	
  Theme	
  de	
  Android	
  4.0	
  para	
  1.6+	
  




                                             Christophe
Roboguice	
  
      h$p://code.google.com/p/roboguice/	
  
   Reduce	
  el	
  código	
  +	
  Inyección	
  de	
  dependencias	
  
       @ContentView(R.layout.main)	
       class RoboWay extends RoboActivity { 	
           @InjectView(R.id.name)             TextView name; 	
           @InjectView(R.id.thumbnail)        ImageView thumbnail; 	
           @InjectResource(R.drawable.icon)   Drawable icon; 	
           @InjectResource(R.string.app_name) String myName; 	
           @Inject                            LocationManager loc; 	
       	
           public void onCreate(Bundle savedInstanceState) { 	
               super.onCreate(savedInstanceState); 	
               name.setText( "Hello, " + myName ); 	
           } 	
       } 	




                                                          Google
Reporte	
  de	
  Crashes	
  
                           Envío	
  automá^co	
  de	
  crashes	
  
                          h$p://code.google.com/p/acra/	
  

                          @ReportsCrashes(formKey = ”apiKey") 	
                          public class MyApplication extends Application {	




         Mejor	
  visualización	
  
      h$p://www.bugsense.com/	
  




                                                       Kevin
Analíticas	
  
 App	
  Annie	
  
 www.appannie.com	
  




                        Roger
Códigos	
  fuente	
  de	
  
referencia	
  
Repositorios	
  
•  Código	
  fuente	
  de	
  android	
  
                        h$ps://github.com/android	
  
                                         	
  
•  Aplicación	
  Github	
  
                   h$ps://github.com/github/android	
  
                                         	
  
•  Librerías	
  Square	
  
                             h$ps://github.com/square	
  
        h$p://slideshare.net/burkeeric/android-­‐app-­‐anatomy	
  
	
  
•  commonsware.com	
  
                    h$ps://github.com/commonsguy	
  
Y	
  si	
  no…	
  descompilar	
  
•  h$p://code.google.com/p/android-­‐apktool	
  
•  h$p://code.google.com/p/dex2jar	
  	
  



    ./apktool d -d apks/$apkname.apk apps/$apkname	
    	
    sh dex2jar.sh $apkname.apk	
    	
    Unzip ${apkname}_dex2jar.jar –d $apkname/src	
    	
    jad/jad -o -r -sjava -d$apkname/src “$apkname/src/**/*.class"
Interfaces	
  
awesómicas	
  
No	
  seas	
  delincuente	
  
Android	
  niceties	
  
          h$p://androidniceKes.tumblr.com/	
  
                          	
  
Snippets	
  
Comunicación	
  entre	
  Activities	
  
     public static Intent getCallingIntent	
          	(Context ctx, String url, String title) {	
 	
               	Intent i = new Intent(ctx, BrowserActivity.class);	
                 i.putExtra(EXTRAS_OPEN_URL, url);	
                 i.putExtra(EXTRAS_WEB_TITLE, title);	
                 return i;	
       }	
  




•  Si	
  los	
  parámetros	
  son	
  clases	
  personalizadas:	
  
   •  Si	
  son	
  pequeños,	
  Serializable	
  
   •  Si	
  no,	
  implementar	
  Parcelable	
  (si	
  es	
  una	
  imagen	
  pasar	
  
          filepath)	
  
Custom	
  Logger	
  
public class DebugLog	
{	
      public final static boolean DEBUG = true;	
	
      public static void log(String message)	
      {	
          if (DEBUG)	
          {	
             StackTraceElement stack = Thread.currentThread().getStackTrace()[3];	
             String fullCN = stack.getClassName();            	
             String className = fullCN.substring(fullClassName.lastIndexOf(".") + 1);
           	 String methodName = stack.getMethodName();	
             int lineNumber = stack.getLineNumber();	
	
             Log.d(className + "." + methodName + "():" + lineNumber, message);	
          }	
      }	
}	
  
¿Preguntas?	
  




   @fegabe	
  
   fegabe@gmail.com	
  
¡Gracias!	
  
@fegabe	
  
fegabe@gmail.com	
  

Más contenido relacionado

Similar a Android Tips & Tricks - Boosting your productivity

Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Paradigma Digital
 
introducción a flutter
introducción a flutterintroducción a flutter
introducción a flutter
Victor Alfonso Rodas Oña
 
Seguridad en Android
Seguridad en AndroidSeguridad en Android
Seguridad en Android
Jose Manuel Ortega Candel
 
Mobile Day - Kotlin
Mobile Day - KotlinMobile Day - Kotlin
Mobile Day - Kotlin
Software Guru
 
Intel Android @ HackMTY
Intel Android @ HackMTYIntel Android @ HackMTY
Intel Android @ HackMTY
Software Guru
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
Pablo Godel
 
Django
DjangoDjango
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
Manuel Carrasco Moñino
 
Tu api ha muerto larga vida a tu dsl
Tu api ha muerto  larga vida a tu dslTu api ha muerto  larga vida a tu dsl
Tu api ha muerto larga vida a tu dsl
Jorge Aguilera
 
PhoneGap Basics v1.0
PhoneGap Basics v1.0PhoneGap Basics v1.0
PhoneGap Basics v1.0
Jesús Fontecha
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
rodasc
 
Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparency
trustparency
 
IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)
repcax
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
Jose Juan R. Zuñiga
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
JM Robles
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
Arkhotech
 
Manual De Javascript
Manual De JavascriptManual De Javascript
Manual De JavascriptSteven Gomez
 

Similar a Android Tips & Tricks - Boosting your productivity (20)

Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
 
introducción a flutter
introducción a flutterintroducción a flutter
introducción a flutter
 
Seguridad en Android
Seguridad en AndroidSeguridad en Android
Seguridad en Android
 
Mobile Day - Kotlin
Mobile Day - KotlinMobile Day - Kotlin
Mobile Day - Kotlin
 
Intel Android @ HackMTY
Intel Android @ HackMTYIntel Android @ HackMTY
Intel Android @ HackMTY
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Django
DjangoDjango
Django
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Tu api ha muerto larga vida a tu dsl
Tu api ha muerto  larga vida a tu dslTu api ha muerto  larga vida a tu dsl
Tu api ha muerto larga vida a tu dsl
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
PhoneGap Basics v1.0
PhoneGap Basics v1.0PhoneGap Basics v1.0
PhoneGap Basics v1.0
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparency
 
IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
Manual De Javascript
Manual De JavascriptManual De Javascript
Manual De Javascript
 
Javascript
JavascriptJavascript
Javascript
 

Último

ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 

Último (20)

ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 

Android Tips & Tricks - Boosting your productivity

  • 1. Tips&Tricks     Boosting  your     productivity   Fernando  García  Bernal   @fegabe    (twi$er,  linkedin,  github…)  
  • 2. ¿Quién  soy?   •  ¿Dónde?  Malagueño  en  Barcelona   •  ¿Qué?  Freelance  Android/iOS.  +3  años  experiencia  móvil  
  • 3. Contenido   • Mejorar  entorno  desarrollo   • Librerías  fundamentales   • Códigos  fuente   • Patrones  de  diseño   • Snippets  
  • 5. android  x86   www.android-­‐x86.org  
  • 6. adb  (Android  Debug  Bridge)   •  adb  devices   •  adb  kill-­‐server  &&  adb  start-­‐server   •  adb  push  /  pull      Recuperar  apk  (necesario  root!)    $  adb  pull  /data/app/com.facebook.katana-­‐1.apk     •  adb  install  /  uninstall   •  adb  shell    Acceso  SQLite    $  adb  shell;  $  sqlite3     •  Conexión  wireless  con  disposiKvo:                                  adbWireless  
  • 7. Proxy   •  Charles  Proxy     •  ¿Cómo?   •  Configurar  Android  (si  lo  permite)   •  Usar  aplicación  (si  Kenes  móvil  rooteado)   •  Por  código:   DefaultHttpClient httpclient = new DefaultHttpClient(); HttpHost proxy = new HttpHost("1.2.3.4", 8080); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);  
  • 8. Colored  logcat    Permite  personaliza  la  salida  editando  el  fichero  ~/.logcat-­‐color   h$ps://github.com/marshall/logcat-­‐color.git  
  • 9. Re-­‐aprender  Eclipse   •  Técnica  milenaria  de  vista  dual  para  edición  de  interfaces                 •  Otros   •  Refactors   •  expresiones  regulares   •  Shortcuts:  desplazar  líneas  
  • 11. ActionBarSherlock   h$ps://github.com/JakeWharton/AcKonBarSherlock   Implementación  AcKonBar  design  pa$ern   Jake
  • 12. HoloEverywhere   h$ps://github.com/ChristopheVersieux/HoloEverywhere.git   Holo  Theme  de  Android  4.0  para  1.6+   Christophe
  • 13. Roboguice   h$p://code.google.com/p/roboguice/   Reduce  el  código  +  Inyección  de  dependencias   @ContentView(R.layout.main) class RoboWay extends RoboActivity { @InjectView(R.id.name) TextView name; @InjectView(R.id.thumbnail) ImageView thumbnail; @InjectResource(R.drawable.icon) Drawable icon; @InjectResource(R.string.app_name) String myName; @Inject LocationManager loc; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); name.setText( "Hello, " + myName ); } } Google
  • 14. Reporte  de  Crashes   Envío  automá^co  de  crashes   h$p://code.google.com/p/acra/   @ReportsCrashes(formKey = ”apiKey") public class MyApplication extends Application { Mejor  visualización   h$p://www.bugsense.com/   Kevin
  • 15. Analíticas   App  Annie   www.appannie.com   Roger
  • 16. Códigos  fuente  de   referencia  
  • 17. Repositorios   •  Código  fuente  de  android   h$ps://github.com/android     •  Aplicación  Github   h$ps://github.com/github/android     •  Librerías  Square   h$ps://github.com/square   h$p://slideshare.net/burkeeric/android-­‐app-­‐anatomy     •  commonsware.com   h$ps://github.com/commonsguy  
  • 18. Y  si  no…  descompilar   •  h$p://code.google.com/p/android-­‐apktool   •  h$p://code.google.com/p/dex2jar     ./apktool d -d apks/$apkname.apk apps/$apkname sh dex2jar.sh $apkname.apk Unzip ${apkname}_dex2jar.jar –d $apkname/src jad/jad -o -r -sjava -d$apkname/src “$apkname/src/**/*.class"
  • 21. Android  niceties   h$p://androidniceKes.tumblr.com/    
  • 23. Comunicación  entre  Activities   public static Intent getCallingIntent (Context ctx, String url, String title) { Intent i = new Intent(ctx, BrowserActivity.class); i.putExtra(EXTRAS_OPEN_URL, url); i.putExtra(EXTRAS_WEB_TITLE, title); return i; }   •  Si  los  parámetros  son  clases  personalizadas:   •  Si  son  pequeños,  Serializable   •  Si  no,  implementar  Parcelable  (si  es  una  imagen  pasar   filepath)  
  • 24. Custom  Logger   public class DebugLog { public final static boolean DEBUG = true; public static void log(String message) { if (DEBUG) { StackTraceElement stack = Thread.currentThread().getStackTrace()[3]; String fullCN = stack.getClassName(); String className = fullCN.substring(fullClassName.lastIndexOf(".") + 1); String methodName = stack.getMethodName(); int lineNumber = stack.getLineNumber(); Log.d(className + "." + methodName + "():" + lineNumber, message); } } }  
  • 25. ¿Preguntas?   @fegabe   fegabe@gmail.com  

Notas del editor

  1. SimuladoradbWirelessLogsProxyEclipse
  2. Prefierotrabajar con simulador y parapruebas finales utilizardispositivosArranque en segundosVelocidaddespliegueaceleración HWDifferentesresoluciones
  3. Android Debug Bridge
  4. Interceptar y modificar
  5. Tengo un fork en mi repositorioNo uso el logcat de eclipse
  6. Cons Tamaño, aunqueasacc son 3.6 MActionBarSherlockHoloEverywhereACRA + bugsenseRoboguiceAQuery / Android annotations Otros, MapviewballoonsReferencias, https://github.com/javipacheco/Android-DataFramework
  7. Implementar guidelines, lo que no ha hechogoogle..Android library for implementing the action bar design pattern using the native ActionBar on 3.0+ and a custom implementation on pre-3.0 through a single API and theme.Se basan en Android compatibility libraryJacktieneotraslibreríascomo:ViewPagerIndicator, NineOldAndroidsNotificationCompat2 An extension of the NotificationCompat helper in the support library which actually supports all of the features of the Android 4.1 (Jelly Bean) release. ActivityCompat2 Extension of ActivityCompat helper which supports the new startActivity and ActivityOptions features of Android 4.1.
  8. No laconsidero entre lasfundamentales, pero no dudarénunca de usarlaBasado en Google guiceInyección de dependencias = ready for testing! (roboelectric o robotium)
  9. Cualquiera de laslibreríasquehemosdicho anteshttps://github.com/androidhttps://github.com/github/android, y llegas a esto https://github.com/kevinsawicki/wishlistSquareVer los starred
  10. DescompilarPuedesverlaslibreríasqueusanFacebook, path, foursquare, google plus, ted photoparty
  11. DescompilarPuedesverlaslibreríasqueusanFacebook, path, foursquare, google plus, ted photoparty
  12. Primero WTF
  13. SimuladoradbWirelessLogsProxyEclipse