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

PDF
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
PDF
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
PDF
PDF
PHP's FIG and PSRs
PDF
The linux shell. Shell Scripting desde 0
PPTX
Nfc on Android
PDF
Material Design for Old Schoolers
PDF
The Mayans Lost Guide to RxJava on Android
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
PHP's FIG and PSRs
The linux shell. Shell Scripting desde 0
Nfc on Android
Material Design for Old Schoolers
The Mayans Lost Guide to RxJava on Android

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

DOCX
Elementos de eclipse
DOCX
Elementos de eclipse
PDF
Programación de Apps con Android – Avanzado por Jorge Pintado
PDF
Seminario Android (Parte 1) - movilforum
PDF
239984949 curso-android-pptx
PDF
Deletreando Android
PPTX
Introducción a Android
ODP
Android Pres3
PDF
Introducción a Android: 10 cosas importantes que hay que entender
PDF
Taller Android seedrocket
PPSX
Aplicaciones android
PDF
Tema 4.3 Ejemplo sobre teleco
DOC
01 instalación del ambiente de desarrollo para android
PDF
Ingeniería inversa básica en android tomo ii
PPT
IOF Labs Weekend - Android (27082011)
DOCX
Manual aplicaciones moviles cristian
KEY
Android la plataforma móvil open source
PPT
Curso de programacion en android
PPTX
Curso Iniciacion android
PPTX
Introducción al desarrollo Android, Sesión 1
Elementos de eclipse
Elementos de eclipse
Programación de Apps con Android – Avanzado por Jorge Pintado
Seminario Android (Parte 1) - movilforum
239984949 curso-android-pptx
Deletreando Android
Introducción a Android
Android Pres3
Introducción a Android: 10 cosas importantes que hay que entender
Taller Android seedrocket
Aplicaciones android
Tema 4.3 Ejemplo sobre teleco
01 instalación del ambiente de desarrollo para android
Ingeniería inversa básica en android tomo ii
IOF Labs Weekend - Android (27082011)
Manual aplicaciones moviles cristian
Android la plataforma móvil open source
Curso de programacion en android
Curso Iniciacion android
Introducción al desarrollo Android, Sesión 1
Publicidad

Último (20)

PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
ACTIVIDAD 2.pdf j
PDF
La electricidad y la electrónica .pdf n
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Administración se srevidores de apliaciones
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Conceptos básicos de programación tecnología.pdf
PDF
Calidad desde el Docente y la mejora continua .pdf
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
Presentación de Redes de Datos modelo osi
PDF
Maste clas de estructura metálica y arquitectura
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
ACTIVIDAD 2.pdf j
La electricidad y la electrónica .pdf n
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
Estrategia de apoyo tecnología grado 9-3
Administración se srevidores de apliaciones
SAP Transportation Management para LSP, TM140 Col18
Estrategia de apoyo tecnología miguel angel solis
Conceptos básicos de programación tecnología.pdf
Calidad desde el Docente y la mejora continua .pdf
Trabajo colaborativo Grupo #2.docxmmuhhlk
Trabajo colaborativo Grupo #2.docxmkkkkkkl
introduccion a las_web en el 2025_mejoras.ppt
Presentación de Redes de Datos modelo osi
Maste clas de estructura metálica y arquitectura
REDES INFORMATICAS REDES INFORMATICAS.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Publicidad

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

  • #5: SimuladoradbWirelessLogsProxyEclipse
  • #6: Prefierotrabajar con simulador y parapruebas finales utilizardispositivosArranque en segundosVelocidaddespliegueaceleración HWDifferentesresoluciones
  • #7: Android Debug Bridge
  • #8: Interceptar y modificar
  • #9: Tengo un fork en mi repositorioNo uso el logcat de eclipse
  • #11: Cons Tamaño, aunqueasacc son 3.6 MActionBarSherlockHoloEverywhereACRA + bugsenseRoboguiceAQuery / Android annotations Otros, MapviewballoonsReferencias, https://github.com/javipacheco/Android-DataFramework
  • #12: 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.
  • #14: No laconsidero entre lasfundamentales, pero no dudarénunca de usarlaBasado en Google guiceInyección de dependencias = ready for testing! (roboelectric o robotium)
  • #17: Cualquiera de laslibreríasquehemosdicho anteshttps://github.com/androidhttps://github.com/github/android, y llegas a esto https://github.com/kevinsawicki/wishlistSquareVer los starred
  • #18: DescompilarPuedesverlaslibreríasqueusanFacebook, path, foursquare, google plus, ted photoparty
  • #19: DescompilarPuedesverlaslibreríasqueusanFacebook, path, foursquare, google plus, ted photoparty
  • #20: Primero WTF
  • #27: SimuladoradbWirelessLogsProxyEclipse