Alex Verdyan
@aexxx
   Build tools
     ant, maven
   Libraries
     Roboguice, retrofit, ormlite, androidannotatation
     s,
   Testing
     Fonemonkey, robolectric, robotium solo
   Stuff
     acra, bugsense,
Pros
  developed by Google (Android tools team)
  Gets all the latest SDK improvements
  Generated from Eclipse (ADT)
Cons
  No dependency management ( needs Ivy)
  Not trivial to contribute (or debug)
  Ant…
   founded by JAYWAY
   developed by the community
   Hosted on github – easy to contribute/debug
   Easy to setup
   Dependency management
     Jars depend on other jars with versions
   Supports
     package (apk/apklib), jar sign, zipalign, proguark,
      native, scala and more
   Runs tests
     start emulator prior to running test
   Use Maven profiles to distinguish dev from release build
   Based on Google Guice
   Simplify your code make it more readable
   Remove boilerplate

   PLUS: You get the power of dependency
    injection (Guice)
     Automatic Injection
     Loose coupling
     Testing with Mocks
   Re-usabale library by Square Inc.
   Interesting stuff
     RestAdapter – abstraction over HTTP for Android
      ▪ Create a Java interface for your services
     ShakeDetector
     QueueFile (for storing a Q on Android filesystem)
   Does all the dirty HTTP work for you
   All calls are Async
     can be used from UI thread w/ callback
   Built-in JSON support

   Uses JdkProxy, Guice and Gson
   Lightweight ORM
   Makes DB interaction more pleasant
   Code more readable
   Mature project
   Good documentation + large community
   Excellent support from the project owner
    Grey Watson http://256.com/gray/
   Provides Android specific annotations to
    make the code even more readable
   Can be integrated with roboguice
   Works by generating code during build
    process
   Relatively new (4-6 month)
    Backed up by commercial firm (Gorilla Logic)
    Record your tests
    Adjust playback speed
    Add conditions
    Generate JUnit from the recording
    Tests can run as plain JUnit (it communicates
     with the app inside emulator)
* very elegant solution for test recording
   Selenium like UI + Functional testing
    framework
   Runs on Emulator/Device
   You can run tests from IDE
   No emulator
   Fast
   Enables TDD
   No mocking framework needed

http://github.com/pivotal/robolectric
   Run tests from IDE
   Very fast
   No emulator
   Intercepts loading of Android classes –
    rewriting their bodies to return null/0/false
   Or forward calls to shadow classes
   Starting new Android project?
   Here’s Intellij project template with configured:
     roboguice
     robolectric
     C2DM
     Android source jars
     Jackson (json parser)
     ….
   https://github.com/pivotal/AndroidIntelliJStarter
   Library that submits crash reports (or
    exceptions) to your
    server / Google spreadsheet / email
   Add logcat and memory usage to your report

   Mature project
   Used by lots of apps (incl. Facebook app)
   OSS
   Bug tracking for mobile
   Realtime crash / bugs analytics
   Search
   Notify users when bug is fixed
   Supports Proguard
   Integrates with ACRA and JIRA
   Post crashes/bugs as tickets in JIRA
   Still in development
   Open source
   Cool features
     Get user feedback
     Reply to user via comment on JIRA issue
     Notify user the crash/bug he reported is fixed
     and more…
Any.DO
Android developer's toolbox

Android developer's toolbox

  • 1.
  • 2.
    Build tools  ant, maven  Libraries  Roboguice, retrofit, ormlite, androidannotatation s,  Testing  Fonemonkey, robolectric, robotium solo  Stuff  acra, bugsense,
  • 4.
    Pros  developedby Google (Android tools team)  Gets all the latest SDK improvements  Generated from Eclipse (ADT) Cons  No dependency management ( needs Ivy)  Not trivial to contribute (or debug)  Ant…
  • 5.
    founded by JAYWAY  developed by the community  Hosted on github – easy to contribute/debug  Easy to setup  Dependency management  Jars depend on other jars with versions  Supports  package (apk/apklib), jar sign, zipalign, proguark, native, scala and more  Runs tests  start emulator prior to running test
  • 6.
    Use Maven profiles to distinguish dev from release build
  • 8.
    Based on Google Guice  Simplify your code make it more readable  Remove boilerplate  PLUS: You get the power of dependency injection (Guice)  Automatic Injection  Loose coupling  Testing with Mocks
  • 11.
    Re-usabale library by Square Inc.  Interesting stuff  RestAdapter – abstraction over HTTP for Android ▪ Create a Java interface for your services  ShakeDetector  QueueFile (for storing a Q on Android filesystem)
  • 12.
    Does all the dirty HTTP work for you  All calls are Async  can be used from UI thread w/ callback  Built-in JSON support  Uses JdkProxy, Guice and Gson
  • 14.
    Lightweight ORM  Makes DB interaction more pleasant  Code more readable  Mature project  Good documentation + large community  Excellent support from the project owner Grey Watson http://256.com/gray/
  • 19.
    Provides Android specific annotations to make the code even more readable  Can be integrated with roboguice  Works by generating code during build process
  • 23.
    Relatively new (4-6 month)  Backed up by commercial firm (Gorilla Logic)  Record your tests  Adjust playback speed  Add conditions  Generate JUnit from the recording  Tests can run as plain JUnit (it communicates with the app inside emulator) * very elegant solution for test recording
  • 26.
    Selenium like UI + Functional testing framework  Runs on Emulator/Device
  • 28.
    You can run tests from IDE  No emulator  Fast  Enables TDD  No mocking framework needed http://github.com/pivotal/robolectric
  • 29.
    Run tests from IDE  Very fast  No emulator  Intercepts loading of Android classes – rewriting their bodies to return null/0/false  Or forward calls to shadow classes
  • 33.
    Starting new Android project?  Here’s Intellij project template with configured:  roboguice  robolectric  C2DM  Android source jars  Jackson (json parser)  ….  https://github.com/pivotal/AndroidIntelliJStarter
  • 34.
    Library that submits crash reports (or exceptions) to your server / Google spreadsheet / email  Add logcat and memory usage to your report  Mature project  Used by lots of apps (incl. Facebook app)  OSS
  • 35.
    Bug tracking for mobile  Realtime crash / bugs analytics  Search  Notify users when bug is fixed  Supports Proguard  Integrates with ACRA and JIRA
  • 37.
    Post crashes/bugs as tickets in JIRA  Still in development  Open source  Cool features  Get user feedback  Reply to user via comment on JIRA issue  Notify user the crash/bug he reported is fixed  and more…
  • 38.

Editor's Notes

  • #6 you’re welcome to create pull requests
  • #7 When releasing you don’t need the instrumentation testsWhen releasing you need to sign + zipalign + proguard + proguard ….
  • #9 singleton
  • #21 ViewById by name conventionRestService – idea is similar to retrofit