Android Tips & Tricks - Boosting your productivity

2,910 views

Published on

After several years of making android applications, I've collected a bunch of tips and techniques to improve the development process. These are going from discovering non-standard tools, knowing better your IDE, using fundamental and some uncommon libraries and other stuff.
This presentation is aimed for those in the beginner and intermediate levels but I'm sure advanced developers will learn a couple a things as well

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,910
On SlideShare
0
From Embeds
0
Number of Embeds
189
Actions
Shares
0
Downloads
68
Comments
0
Likes
9
Embeds 0
No embeds

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

    1. 1. Tips&Tricks     Boosting  your     productivity  Fernando  García  Bernal  @fegabe    (twi$er,  linkedin,  github…)  
    2. 2. ¿Quién  soy?  •  ¿Dónde?  Malagueño  en  Barcelona  •  ¿Qué?  Freelance  Android/iOS.  +3  años  experiencia  móvil  
    3. 3. Contenido  • Mejorar  entorno  desarrollo  • Librerías  fundamentales  • Códigos  fuente  • Patrones  de  diseño  • Snippets  
    4. 4. Mejorar  entorno  desarrollo  
    5. 5. android  x86   www.android-­‐x86.org  
    6. 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. 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. 8. Colored  logcat    Permite  personaliza  la  salida  editando  el  fichero  ~/.logcat-­‐color   h$ps://github.com/marshall/logcat-­‐color.git  
    9. 9. Re-­‐aprender  Eclipse  •  Técnica  milenaria  de  vista  dual  para  edición  de  interfaces                •  Otros   •  Refactors   •  expresiones  regulares   •  Shortcuts:  desplazar  líneas  
    10. 10. Librerías  fundamentales  
    11. 11. ActionBarSherlock   h$ps://github.com/JakeWharton/AcKonBarSherlock   Implementación  AcKonBar  design  pa$ern   Jake
    12. 12. HoloEverywhere  h$ps://github.com/ChristopheVersieux/HoloEverywhere.git   Holo  Theme  de  Android  4.0  para  1.6+   Christophe
    13. 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. 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. 15. Analíticas   App  Annie   www.appannie.com   Roger
    16. 16. Códigos  fuente  de  referencia  
    17. 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. 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"
    19. 19. Interfaces  awesómicas  
    20. 20. No  seas  delincuente  
    21. 21. Android  niceties   h$p://androidniceKes.tumblr.com/    
    22. 22. Snippets  
    23. 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. 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. 25. ¿Preguntas?   @fegabe   fegabe@gmail.com  
    26. 26. ¡Gracias!  @fegabe  fegabe@gmail.com  

    ×