android tips & tricks - boosting your productivity

26
Tips&Tricks Boosting your productivity Fernando García Bernal @fegabe (twi$er, linkedin, github…)

Upload: fernando-garcia

Post on 16-May-2015

2.451 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Android Tips & Tricks - Boosting your productivity

Tips&Tricks    

Boosting  your    productivity  

Fernando  García  Bernal  @fegabe    (twi$er,  linkedin,  github…)  

Page 2: Android Tips & Tricks - Boosting your productivity

¿Quién  soy?  •  ¿Dónde?  Malagueño  en  Barcelona  •  ¿Qué?  Freelance  Android/iOS.  +3  años  experiencia  móvil  

Page 3: Android Tips & Tricks - Boosting your productivity

Contenido  

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

Page 4: Android Tips & Tricks - Boosting your productivity

Mejorar  entorno  desarrollo  

Page 5: Android Tips & Tricks - Boosting your productivity

android  x86  

www.android-­‐x86.org  

Page 6: Android Tips & Tricks - Boosting your productivity

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  

Page 7: Android Tips & Tricks - Boosting your productivity

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);  

Page 8: Android Tips & Tricks - Boosting your productivity

Colored  logcat  

 Permite  personaliza  la  salida  editando  el  fichero  ~/.logcat-­‐color  h$ps://github.com/marshall/logcat-­‐color.git  

Page 9: Android Tips & Tricks - Boosting your productivity

Re-­‐aprender  Eclipse  •  Técnica  milenaria  de  vista  dual  para  edición  de  interfaces  

             

•  Otros  •  Refactors  •  expresiones  regulares  •  Shortcuts:  desplazar  líneas  

Page 10: Android Tips & Tricks - Boosting your productivity

Librerías  fundamentales  

Page 11: Android Tips & Tricks - Boosting your productivity

ActionBarSherlock  

Jake

h$ps://github.com/JakeWharton/AcKonBarSherlock  Implementación  AcKonBar  design  pa$ern  

Page 12: Android Tips & Tricks - Boosting your productivity

HoloEverywhere  

Christophe

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

Page 13: Android Tips & Tricks - Boosting your productivity

Roboguice  

Google

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 ); } }

Page 14: Android Tips & Tricks - Boosting your productivity

Reporte  de  Crashes  

Kevin

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/  

Page 15: Android Tips & Tricks - Boosting your productivity

Analíticas  

Roger

App  Annie  www.appannie.com  

Page 16: Android Tips & Tricks - Boosting your productivity

Códigos  fuente  de  referencia  

Page 17: Android Tips & Tricks - Boosting your productivity

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  

Page 18: Android Tips & Tricks - Boosting your productivity

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/$apknamesh dex2jar.sh $apkname.apkUnzip ${apkname}_dex2jar.jar –d $apkname/srcjad/jad -o -r -sjava -d$apkname/src “$apkname/src/**/*.class"

Page 19: Android Tips & Tricks - Boosting your productivity

Interfaces  awesómicas  

Page 20: Android Tips & Tricks - Boosting your productivity

No  seas  delincuente  

Page 21: Android Tips & Tricks - Boosting your productivity

Android  niceties  h$p://androidniceKes.tumblr.com/  

 

Page 22: Android Tips & Tricks - Boosting your productivity

Snippets  

Page 23: Android Tips & Tricks - Boosting your productivity

Comunicación  entre  Activities  

•  Si  los  parámetros  son  clases  personalizadas:  •  Si  son  pequeños,  Serializable  •  Si  no,  implementar  Parcelable  (si  es  una  imagen  pasar  filepath)  

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; }  

Page 24: Android Tips & Tricks - Boosting your productivity

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); } }}  

Page 25: Android Tips & Tricks - Boosting your productivity

¿Preguntas?  

@fegabe  

[email protected]  

Page 26: Android Tips & Tricks - Boosting your productivity

¡Gracias!  @fegabe  

[email protected]