SlideShare a Scribd company logo
1 of 26
Download to read offline
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	
  

More Related Content

Similar to 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 webParadigma Digital
 
Intel Android @ HackMTY
Intel Android @ HackMTYIntel Android @ HackMTY
Intel Android @ HackMTYSoftware 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 PHPConferenceARPablo Godel
 
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 dslJorge Aguilera
 
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
PHPAJAXrodasc
 
Taller mobile by trustparency
Taller mobile by trustparencyTaller mobile by trustparency
Taller mobile by trustparencytrustparency
 
IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)repcax
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
Manual De Javascript
Manual De JavascriptManual De Javascript
Manual De JavascriptSteven Gomez
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascriptBoris Villon
 

Similar to 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
 
1117035859 javascript
1117035859 javascript1117035859 javascript
1117035859 javascript
 

Recently uploaded

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Recently uploaded (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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  

Editor's Notes

  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