SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Ra#onalize	
  Android	
  development	
  with	
  
StAnD	
  
Clement	
  Escoffier,	
  akquinet	
  A.G.	
  
What	
  about	
  me	
  ?	
  


	
  
¡  Head	
  of	
  the	
  Innova=on	
  Competence	
  Center	
  at	
  akquinet	
  
¡  Apache	
  So@ware	
  Founda=on	
  
    –  PMC	
  Apache	
  Felix,	
  	
  Apache	
  Ace	
  
    –  Apache	
  Felix	
  iPOJO	
  main	
  developer	
  
¡  OW2	
  
    –  Chameleon	
  project	
  leader	
  
¡  A	
  lot	
  of	
  others	
  contribu=ons	
  	
  
    –  maven-­‐android-­‐plugin	
  
    –  H-­‐UBU	
  




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                    2	
  

          







                                                                              
                                                                           
                                                                           
                                                                           

                                                                           

                                                                           



 

                                                                                    3	
  
Copyright	
  ©	
  2010	
  –	
  akquinet	
     4	
  
I	
  love	
  driving	
  
                                  developers	
  
                                       crazy	
  




Copyright	
  ©	
  2010	
  –	
  akquinet	
     5	
  
Tradi#onal	
  Android	
  development	
  



•        Eclipse	
  Android	
  Development	
  
        •  Development,	
  Tests,	
  Debug	
  
        •  Export	
  and	
  signature	
  of	
  APKs	
  
        •  Limited	
  modularity	
  
        •  Eclipse-­‐based	
  build	
  process	
  
        •  No	
  release	
  process	
  (export	
  wizard)	
  


•        Apache	
  Ant	
  
        •  Compila=on,	
  Test,	
  Packaging	
  
        •  Release	
  
        •  Dependencies	
  management	
  
        •  Hard	
  to	
  maintain	
  –	
  Scalability	
  –	
  Recursion	
  
        •  Can	
  quickly	
  differ	
  from	
  standard	
  builds	
  



Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                               6	
  
StAnD	
  


•        Let’s	
  ra#onalize	
  Android	
  development	
  
        •  Support	
  Android	
  applica=on	
  produc=on	
  from	
  development	
  to	
  delivery	
  


        •  Simplifica#on	
  of	
  the	
  development	
  model	
  
                •  Bootstrap	
  a	
  project	
  in	
  less	
  than	
  1	
  minute	
  
                •  Improve	
  the	
  logging	
  system	
  (Androlog)	
  
                •  Injec=on	
  framework	
  (Roboject)	
  

        •  Reliable	
  build	
  and	
  sophis#cated	
  branding	
  
                •  Maven-­‐based	
  build	
  system	
  (maven-­‐android-­‐plugin)	
  
                •  Advanced	
  modularity	
  and	
  composi=on	
  (rindirect)	
  

        •  Improve	
  quality	
  and	
  feedback	
  
                •  Integra=on	
  and	
  UI	
  tests	
  (Marvin)	
  
                •  Con=nuous	
  integra=on	
  (Android	
  plugin	
  for	
  Jenkins)	
  
                •  Complete	
  crash	
  report	
  (Androlog)	
  



Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                                         7	
  
This	
   is	
   a	
   work	
   of	
   ficFon.	
   Names,	
   characters,	
  	
  
places	
   and	
   projects	
   are	
   all	
   products	
   of	
   the	
  
author’s	
   imaginaFon.	
   	
   Any	
   resemblance	
   to	
  
actual	
   events,	
   locales	
   or	
   projects	
   is	
   enFrely	
  
coincidental	
  ;-­‐)	
  



                          Copyright	
  ©	
  2010	
  –	
  akquinet	
     8	
  
Once	
  upon	
  a	
  #me…	
  a	
  project	
  


•        An	
  eBook	
  Reader	
  


        •  DRM	
  
                •  Na=ve	
  library	
  
                •  Server	
  integra=on	
  
                •  Tethering	
  

        •  Library	
  /	
  Vault,	
  Book	
  Store	
  
                •  Server	
  integra=on	
  

        •  Social	
  aspect	
  	
  
                •  Friends,	
  Sharing,	
  Loaning	
  

        •  Mul=-­‐pladorm	
  
                •  iOS,	
  Android,	
  Desktop	
  (MacOS	
  /	
  Windows)	
  
                •  Synchroniza=on	
  

        •  >	
  2	
  years	
  of	
  ac#ve	
  development	
  

Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                 9	
  
Version 1
                                                    •    Eclipse
                                                    •    2 developers
                                                    •    Native lib integration




                                                    o  No tests
                                                    o  Log statements
                                                       removed before
                                                       release
                                                    o  Facing Java / Android
                                                       API differences




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                   10	
  
Version 1
                                                    •    Eclipse
                                                    •    2 developers
                                                    •    Native lib integration




                                                    o  No tests
                                                    o  Log statements
                                                       removed before
                                                       release
                                                    o  Facing Java / Android
                                                       API differences




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                   11	
  
A	
  bit	
  beMer	
  



                                Version 1                   Version 2
                  •        Eclipse                   •    New features
                  •        2 developers              •    Bad ratings
                  •        Native lib integration    •    Bigger team




                o  No tests
                o  Log statements                   o  Androlog
                   removed before                   o  Testing using
                   release                             instrumentation tests
                o  Facing Java / android            o  Apache Ant
                   APIs differences




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                12	
  
Androlog	
  


Androlog	
  is	
  a	
  configurable	
  log	
  facade	
  for	
  Android	
  


•        Per-­‐logger	
  level	
  configura#on	
  
        •  Log	
  disabled	
  on	
  end-­‐user	
  devices	
  
        •  Can	
  be	
  enabled	
  by	
  developers	
  to	
  reproduce	
  issues	
  


•  Repor#ng	
  
   •  Crashes	
  can	
  be	
  reported	
  by	
  mail	
  or	
  a	
  portal	
  
                •  Device	
  info	
  
                •  Log	
  
                •  Complete	
  stack	
  traces	
  



•  Makes	
  logging	
  a	
  lot	
  easier	
  
•  Faster	
  bug	
  fixes	
  


Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                        13	
  
A	
  bit	
  beMer	
  



                                Version 1                   Version 2
                  •        Eclipse                   •    New features
                  •        2 developers              •    Bad ratings
                  •        Native lib integration    •    Bigger team




                o  No tests
                o  Log statements                   o  Androlog
                   removed before                   o  Testing using
                   release                             instrumentation tests
                o  Facing Java / android            o  Apache Ant
                   APIs differences




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                15	
  
A	
  bit	
  beMer	
  



                      Version 2                             Version 3
        •        New features                        •    Brandings
        •        Bad ratings                         •    Quality++
        •        Bigger team                         •    New features




                                                    o     Maven
      o  Androlog
                                                    o     Jenkins
      o  Testing using
                                                    o     Marvin
         instrumentation tests
                                                    o     Became really
      o  Apache Ant
                                                          complex




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                           16	
  
Maven-­‐Android-­‐Plugin	
  


Reliable	
  build	
  system	
  
•        Same	
  build	
  on	
  all	
  machines	
  
        •  Conven=on	
  over	
  configura=on	
  
        •  Con=nuous	
  integra=on	
  support	
  
        •  Dependency	
  management	
  
                •  Modularity	
  /	
  Branding	
  


•  Release	
  process	
  
   •  Create	
  marketplace-­‐ready	
  APK	
  

•  Archetypes	
  
   •  Quickstart,	
  with-­‐test,	
  release,	
  stand	
  

•  More	
  reliable	
  
•  More	
  maintainable	
  
•  Release	
  process	
  
Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
              17	
  
Android	
  plugin	
  for	
  Jenkins	
  /	
  Hudson	
  


Tests	
  Android	
  applica#ons	
  con#nuously	
  on	
  several	
  plaVorms	
  


•        1.6	
  to	
  3.1	
  
        •  A	
  lot	
  of	
  devices	
  are	
  available	
  
        •  Huge	
  Fragmenta=on	
  (1.6)	
  


•  Tests	
  executed	
  on	
  25	
  devices	
  
   •  Covering	
  the	
  most	
  common	
  devices	
  
   •  Emulator	
  configura=ons	
  

•  More	
  reliable	
  applica#ons	
  
•  Less	
  surprises	
  especially	
  when	
  using	
  internals	
  
                	
  




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                   18	
  
Marvin	
  –	
  Simplify	
  Integra#on	
  Tests	
  


Instrumenta#on	
  tests	
  are	
  …	
  really	
  annoying	
  to	
  write	
  !	
  


•        Android	
  instrumenta=on	
  tests	
  
        •  A	
  lot	
  of	
  asynchronocity	
  
        •  Tests	
  don’t	
  easily	
  navigate	
  across	
  ac=vi=es	
  
        •  UI	
  Tests	
  are	
  big	
  burdens	
  


•  Marvin	
  simplifies	
  test	
  wri=ng	
  
   •  A	
  layer	
  on	
  the	
  top	
  of	
  instrumenta=on	
  tests	
  
   •  A	
  set	
  of	
  hamcrest	
  matchers	
  
   •  Integrated	
  into	
  the	
  build	
  process	
  

•  Reduce	
  the	
  amount	
  of	
  code	
  required	
  to	
  write	
  tests	
  
•  Support	
  complex	
  workflows	
  
•  More	
  reliable	
  applica#ons	
  

Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                     20	
  
                	
  
public void testLogin() throws Exception {!
    Instrumentation instr = getInstrumentation();!
!
    ActivityMonitor monitor =
     !instr.addMonitor(MainActivity.class.getName(), null,
     !false);!
    Intent intent = new Intent(Intent.ACTION_MAIN);!
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);!
    intent.setClassName(instr.getTargetContext(),    !
     !LoginActivity.class.getName());!
    instr.startActivitySync(intent);!
    instr.waitForIdleSync();!
    instr.sendStringSync(“clement");!
    instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);!
    instr.sendStringSync(“magic");!
    instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);!
    instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);!
!
    Activity mainActivity =
     !instr.waitForMonitorWithTimeout(monitor, 30000);!
    assertNotNull(mainActivity);!
}!
public void testLogin() throws Exception {!
    LoginActivity loginActivity =
      !startActivity(LoginActivity.class);!
    assertThat(loginActivity)

      !.sendString(”clement")

      !.keyDownUp(KeyEvent.KEYCODE_DPAD_DOWN)

      !.sendString(”magic")

      !.keyDownUp(KeyEvent.KEYCODE_DPAD_DOWN)

      !.keyDownUp(KeyEvent.KEYCODE_DPAD_CENTER)

      !.startsActivity(MainActivity.class);!
}!
From	
  a	
  bit	
  beMer	
  …	
  to	
  being	
  efficient	
  



                      Version 2                             Version 3            Version 4
        •        New features                        •    Brandings       •    More brandings
        •        Bad ratings                         •    Quality++       •    Quality++
        •        Bigger team                         •    New features    •    Socialization




                                                    o     Maven
      o  Androlog
                                                    o     Jenkins         o  Rindirect
      o  Testing using
                                                    o     Marvin          o  Roboject
         instrumentation tests
                                                    o     Became really
      o  Apache Ant
                                                          complex




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                                 23	
  
Rindirect	
  


Sophis#cated	
  modularity	
  for	
  Android	
  
•        Android	
  does	
  not	
  support	
  reusing	
  components	
  from	
  another	
  
         applica=on	
  
        •  Package	
  conflict	
  
                •  Resources	
  not	
  found	
  in	
  R	
  
        •  Libraries	
  do	
  share	
  the	
  same	
  package	
  


•  Rindirect	
  removes	
  those	
  limita=ons	
  by	
  genera=ng	
  the	
  missing/
   required	
  R	
  files	
  
                •  Automated	
  during	
  your	
  build	
  process	
  

•  Allow	
  advanced	
  modularity	
  
•  Improve	
  component	
  sharing	
  

                	
  



Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                              24	
  
Roboject	
  


A	
  CDI	
  for	
  Android	
  
•        Android	
  code	
  can	
  be	
  really	
  =resome	
  
        •  A	
  lot	
  of	
  asynchronocity	
  
                •  Service	
  bindings,	
  intents…	
  
                •  Predominance	
  of	
  the	
  main	
  thread	
  
        •  UI	
  code	
  can	
  be	
  smaller	
  
                •  Retrieving	
  a	
  View,	
  Senng	
  a	
  Layout	
  


•  Roboject	
  dras=cally	
  	
  simplifies	
  Android	
  code	
  
   •  @InjectX	
  where	
  X	
  is	
  Service,	
  Intent,	
  Extra,	
  View,	
  Layout…	
  
   •  Addi=onal	
  lifecycle	
  method	
  :	
  onReady	
  

•  Reduce	
  the	
  amount	
  of	
  code	
  required	
  to	
  develop	
  Android	
  
   applica#ons	
  
•  Minimum	
  run#me	
  overhead	
  
•  Extensible	
  

                	
  
Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                               25	
  
@InjectLayout(R.layout.searchinputactivity)!
public class TweetSearchActivity extends RobojectActivity {!
    @InjectView!
    private EditText editTextSearch;!
!
    @InjectView!
    private Button buttonSearch;!
!
    @Override!
    public void onCreate(Bundle savedInstanceState) {!
          super.onCreate(savedInstanceState);!
!
      buttonSearch.setOnClickListener(new OnClickListener() {!
           public void onClick(View arg0) {!
               Intent intent = new Intent(TweetSearchActivity.this,   !
      !        !TweetListActivity.class);!
               intent.putExtra("searchTerm”,      !       !!
      !        !        !editTextSearch.getText().toString());!
               startActivity(intent);!
           }!
      });!
     }!
}!
From	
  a	
  bit	
  beMer	
  …	
  to	
  being	
  efficient	
  



                      Version 2                             Version 3            Version 4
        •        New features                        •    Brandings       •    More brandings
        •        Bad ratings                         •    Quality++       •    Quality++
        •        Bigger team                         •    New features    •    Socialization




                                                    o     Maven
      o  Androlog
                                                    o     Jenkins         o  Rindirect
      o  Testing using
                                                    o     Marvin          o  Roboject
         instrumentation tests
                                                    o     Became really
      o  Apache Ant
                                                          complex




Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                                 27	
  
An	
  example	
  
would	
  be	
  useful	
  
right	
  about	
  now	
  


            If	
  we	
  have	
  Fme…	
  
StAnD	
  




                                                    ü Androlog	
  
                                                    ü Maven-­‐Android-­‐Plugin	
  
                                                    ü Jenkins	
  Plugin	
  
                                                    ü Marvin	
  
                                                    ü Rindirect	
  
                                                    ü Roboject	
  
                                                    ü Enterprise	
  Extensions	
  


Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                                       29	
  
Q	
  &	
  A	
  




                                                    Questions
                                                        ?




                                                        hYp://stand.spree.de	
  
Copyright	
  ©	
  2010	
  –	
  akquinet	
  AG	
                               30	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Yet Another Android Rootkit
Yet Another Android RootkitYet Another Android Rootkit
Yet Another Android Rootkit
FFRI, Inc.
 
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tlsSpec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
ekito
 

Was ist angesagt? (20)

Android development basic _ZuoSyuanWang
Android development basic _ZuoSyuanWangAndroid development basic _ZuoSyuanWang
Android development basic _ZuoSyuanWang
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggerated
 
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse LibraEclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
 
Java i lecture_1_upd1
Java i lecture_1_upd1Java i lecture_1_upd1
Java i lecture_1_upd1
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
 
History of java
History of javaHistory of java
History of java
 
Yet Another Android Rootkit
Yet Another Android RootkitYet Another Android Rootkit
Yet Another Android Rootkit
 
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tlsSpec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
 
Netbeans
NetbeansNetbeans
Netbeans
 
Introduction to java by priti sajja
Introduction to java by priti sajjaIntroduction to java by priti sajja
Introduction to java by priti sajja
 
Pjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelliPjproject su Android: uno scontro su più livelli
Pjproject su Android: uno scontro su più livelli
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDE
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
 
OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!
 
Swing is not dead
Swing is not deadSwing is not dead
Swing is not dead
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
 
MOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaMOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in Java
 
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
 

Andere mochten auch

OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
Paris Open Source Summit
 
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
Paris Open Source Summit
 
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
Paris Open Source Summit
 

Andere mochten auch (15)

OWF13 - Xen project
OWF13 - Xen projectOWF13 - Xen project
OWF13 - Xen project
 
OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
OWF14 - Plenary Session : Marie Farge, Research director, Ecole Normale Supér...
 
OWF13 - O-Reilly
OWF13 - O-ReillyOWF13 - O-Reilly
OWF13 - O-Reilly
 
OWF13 - Project Smartlamp
OWF13 - Project SmartlampOWF13 - Project Smartlamp
OWF13 - Project Smartlamp
 
OWF14 - Plenary Session : David Jones, Chief Solutions Architect, Sonatype
OWF14 - Plenary Session : David Jones, Chief Solutions Architect, SonatypeOWF14 - Plenary Session : David Jones, Chief Solutions Architect, Sonatype
OWF14 - Plenary Session : David Jones, Chief Solutions Architect, Sonatype
 
OWF13 - Is there an Open (Source) Europe?
OWF13 - Is there an Open (Source) Europe?OWF13 - Is there an Open (Source) Europe?
OWF13 - Is there an Open (Source) Europe?
 
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...OWF12/PAUG Conf Days Dart   a new html5 technology, nicolas geoffray, softwar...
OWF12/PAUG Conf Days Dart a new html5 technology, nicolas geoffray, softwar...
 
OWF14 - Plenary Session : Christian Quest, President, Open Street Map & "BANO...
OWF14 - Plenary Session : Christian Quest, President, Open Street Map & "BANO...OWF14 - Plenary Session : Christian Quest, President, Open Street Map & "BANO...
OWF14 - Plenary Session : Christian Quest, President, Open Street Map & "BANO...
 
OWF14 - Plenary Session : François Pellegrini : Aquinetic
OWF14 - Plenary Session : François Pellegrini : AquineticOWF14 - Plenary Session : François Pellegrini : Aquinetic
OWF14 - Plenary Session : François Pellegrini : Aquinetic
 
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
OWF12/Open Standards for Cloud - Snia and cdmi presentation for owf oct 12 20...
 
OWF13 - GENIVI, the home of open source IVI software
OWF13 - GENIVI, the home of open source IVI softwareOWF13 - GENIVI, the home of open source IVI software
OWF13 - GENIVI, the home of open source IVI software
 
Keynote #Enterprise - Airbus it infrastructure goes open (source), by Peter S...
Keynote #Enterprise - Airbus it infrastructure goes open (source), by Peter S...Keynote #Enterprise - Airbus it infrastructure goes open (source), by Peter S...
Keynote #Enterprise - Airbus it infrastructure goes open (source), by Peter S...
 
Keynote #Enterprise - Orange Open Source governance insight, by Christian PAT...
Keynote #Enterprise - Orange Open Source governance insight, by Christian PAT...Keynote #Enterprise - Orange Open Source governance insight, by Christian PAT...
Keynote #Enterprise - Orange Open Source governance insight, by Christian PAT...
 
Keynote #Society - How Open Source drives Innovation ? par Laurent LE MEUR
Keynote #Society - How Open Source drives Innovation ? par Laurent LE MEURKeynote #Society - How Open Source drives Innovation ? par Laurent LE MEUR
Keynote #Society - How Open Source drives Innovation ? par Laurent LE MEUR
 
Keynote #Society - Openness, Freedom and the Digital Age, par Rufus POLLOCK
Keynote #Society - Openness, Freedom and the Digital Age, par Rufus POLLOCKKeynote #Society - Openness, Freedom and the Digital Age, par Rufus POLLOCK
Keynote #Society - Openness, Freedom and the Digital Age, par Rufus POLLOCK
 

Ähnlich wie Rationalize Android Development with StAnD - Clement Escoffier, akquinet

Continuous integration for androids
Continuous integration for androidsContinuous integration for androids
Continuous integration for androids
Kirill Zotin
 
20110903 candycane
20110903 candycane20110903 candycane
20110903 candycane
Yusuke Ando
 
Android platform
Android platformAndroid platform
Android platform
maya_slides
 
Java programming basics
Java programming basicsJava programming basics
Java programming basics
Pragya Rastogi
 

Ähnlich wie Rationalize Android Development with StAnD - Clement Escoffier, akquinet (20)

Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
Alpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache MavenAlpes Jug (29th March, 2010) - Apache Maven
Alpes Jug (29th March, 2010) - Apache Maven
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Scrumbox ece2011.pptx
Scrumbox ece2011.pptxScrumbox ece2011.pptx
Scrumbox ece2011.pptx
 
Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)Flex Continuous Quality Builds Flex & (Ant || Maven)
Flex Continuous Quality Builds Flex & (Ant || Maven)
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - Maven
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
 
9 cm604.1
9 cm604.19 cm604.1
9 cm604.1
 
Continuous integration for androids
Continuous integration for androidsContinuous integration for androids
Continuous integration for androids
 
Apache Maven at GenevaJUG by Arnaud Héritier
Apache Maven at GenevaJUG by Arnaud HéritierApache Maven at GenevaJUG by Arnaud Héritier
Apache Maven at GenevaJUG by Arnaud Héritier
 
Geneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - MavenGeneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - Maven
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
PhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember AppsPhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember Apps
 
20110903 candycane
20110903 candycane20110903 candycane
20110903 candycane
 
Android platform
Android platformAndroid platform
Android platform
 
Java programming basics
Java programming basicsJava programming basics
Java programming basics
 
Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience Develop Community-based Android Distribution and Upstreaming Experience
Develop Community-based Android Distribution and Upstreaming Experience
 
State of jQuery June 2013 - Portland
State of jQuery June 2013 - PortlandState of jQuery June 2013 - Portland
State of jQuery June 2013 - Portland
 
GEF SVG export in JWT: a newcomer’s rocky ride to Eclipse
GEF SVG export in JWT: a newcomer’s rocky ride to EclipseGEF SVG export in JWT: a newcomer’s rocky ride to Eclipse
GEF SVG export in JWT: a newcomer’s rocky ride to Eclipse
 
Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)Splunking the JVM (Java Virtual Machine)
Splunking the JVM (Java Virtual Machine)
 

Mehr von Paris Open Source Summit

#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
Paris Open Source Summit
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
Paris Open Source Summit
 

Mehr von Paris Open Source Summit (20)

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Rationalize Android Development with StAnD - Clement Escoffier, akquinet

  • 1. Ra#onalize  Android  development  with   StAnD   Clement  Escoffier,  akquinet  A.G.  
  • 2. What  about  me  ?     ¡  Head  of  the  Innova=on  Competence  Center  at  akquinet   ¡  Apache  So@ware  Founda=on   –  PMC  Apache  Felix,    Apache  Ace   –  Apache  Felix  iPOJO  main  developer   ¡  OW2   –  Chameleon  project  leader   ¡  A  lot  of  others  contribu=ons     –  maven-­‐android-­‐plugin   –  H-­‐UBU   Copyright  ©  2010  –  akquinet  AG   2  
  • 3.                    3  
  • 4. Copyright  ©  2010  –  akquinet   4  
  • 5. I  love  driving   developers   crazy   Copyright  ©  2010  –  akquinet   5  
  • 6. Tradi#onal  Android  development   •  Eclipse  Android  Development   •  Development,  Tests,  Debug   •  Export  and  signature  of  APKs   •  Limited  modularity   •  Eclipse-­‐based  build  process   •  No  release  process  (export  wizard)   •  Apache  Ant   •  Compila=on,  Test,  Packaging   •  Release   •  Dependencies  management   •  Hard  to  maintain  –  Scalability  –  Recursion   •  Can  quickly  differ  from  standard  builds   Copyright  ©  2010  –  akquinet  AG   6  
  • 7. StAnD   •  Let’s  ra#onalize  Android  development   •  Support  Android  applica=on  produc=on  from  development  to  delivery   •  Simplifica#on  of  the  development  model   •  Bootstrap  a  project  in  less  than  1  minute   •  Improve  the  logging  system  (Androlog)   •  Injec=on  framework  (Roboject)   •  Reliable  build  and  sophis#cated  branding   •  Maven-­‐based  build  system  (maven-­‐android-­‐plugin)   •  Advanced  modularity  and  composi=on  (rindirect)   •  Improve  quality  and  feedback   •  Integra=on  and  UI  tests  (Marvin)   •  Con=nuous  integra=on  (Android  plugin  for  Jenkins)   •  Complete  crash  report  (Androlog)   Copyright  ©  2010  –  akquinet  AG   7  
  • 8. This   is   a   work   of   ficFon.   Names,   characters,     places   and   projects   are   all   products   of   the   author’s   imaginaFon.     Any   resemblance   to   actual   events,   locales   or   projects   is   enFrely   coincidental  ;-­‐)   Copyright  ©  2010  –  akquinet   8  
  • 9. Once  upon  a  #me…  a  project   •  An  eBook  Reader   •  DRM   •  Na=ve  library   •  Server  integra=on   •  Tethering   •  Library  /  Vault,  Book  Store   •  Server  integra=on   •  Social  aspect     •  Friends,  Sharing,  Loaning   •  Mul=-­‐pladorm   •  iOS,  Android,  Desktop  (MacOS  /  Windows)   •  Synchroniza=on   •  >  2  years  of  ac#ve  development   Copyright  ©  2010  –  akquinet  AG   9  
  • 10. Version 1 •  Eclipse •  2 developers •  Native lib integration o  No tests o  Log statements removed before release o  Facing Java / Android API differences Copyright  ©  2010  –  akquinet  AG   10  
  • 11. Version 1 •  Eclipse •  2 developers •  Native lib integration o  No tests o  Log statements removed before release o  Facing Java / Android API differences Copyright  ©  2010  –  akquinet  AG   11  
  • 12. A  bit  beMer   Version 1 Version 2 •  Eclipse •  New features •  2 developers •  Bad ratings •  Native lib integration •  Bigger team o  No tests o  Log statements o  Androlog removed before o  Testing using release instrumentation tests o  Facing Java / android o  Apache Ant APIs differences Copyright  ©  2010  –  akquinet  AG   12  
  • 13. Androlog   Androlog  is  a  configurable  log  facade  for  Android   •  Per-­‐logger  level  configura#on   •  Log  disabled  on  end-­‐user  devices   •  Can  be  enabled  by  developers  to  reproduce  issues   •  Repor#ng   •  Crashes  can  be  reported  by  mail  or  a  portal   •  Device  info   •  Log   •  Complete  stack  traces   •  Makes  logging  a  lot  easier   •  Faster  bug  fixes   Copyright  ©  2010  –  akquinet  AG   13  
  • 14.
  • 15. A  bit  beMer   Version 1 Version 2 •  Eclipse •  New features •  2 developers •  Bad ratings •  Native lib integration •  Bigger team o  No tests o  Log statements o  Androlog removed before o  Testing using release instrumentation tests o  Facing Java / android o  Apache Ant APIs differences Copyright  ©  2010  –  akquinet  AG   15  
  • 16. A  bit  beMer   Version 2 Version 3 •  New features •  Brandings •  Bad ratings •  Quality++ •  Bigger team •  New features o  Maven o  Androlog o  Jenkins o  Testing using o  Marvin instrumentation tests o  Became really o  Apache Ant complex Copyright  ©  2010  –  akquinet  AG   16  
  • 17. Maven-­‐Android-­‐Plugin   Reliable  build  system   •  Same  build  on  all  machines   •  Conven=on  over  configura=on   •  Con=nuous  integra=on  support   •  Dependency  management   •  Modularity  /  Branding   •  Release  process   •  Create  marketplace-­‐ready  APK   •  Archetypes   •  Quickstart,  with-­‐test,  release,  stand   •  More  reliable   •  More  maintainable   •  Release  process   Copyright  ©  2010  –  akquinet  AG   17  
  • 18. Android  plugin  for  Jenkins  /  Hudson   Tests  Android  applica#ons  con#nuously  on  several  plaVorms   •  1.6  to  3.1   •  A  lot  of  devices  are  available   •  Huge  Fragmenta=on  (1.6)   •  Tests  executed  on  25  devices   •  Covering  the  most  common  devices   •  Emulator  configura=ons   •  More  reliable  applica#ons   •  Less  surprises  especially  when  using  internals     Copyright  ©  2010  –  akquinet  AG   18  
  • 19.
  • 20. Marvin  –  Simplify  Integra#on  Tests   Instrumenta#on  tests  are  …  really  annoying  to  write  !   •  Android  instrumenta=on  tests   •  A  lot  of  asynchronocity   •  Tests  don’t  easily  navigate  across  ac=vi=es   •  UI  Tests  are  big  burdens   •  Marvin  simplifies  test  wri=ng   •  A  layer  on  the  top  of  instrumenta=on  tests   •  A  set  of  hamcrest  matchers   •  Integrated  into  the  build  process   •  Reduce  the  amount  of  code  required  to  write  tests   •  Support  complex  workflows   •  More  reliable  applica#ons   Copyright  ©  2010  –  akquinet  AG   20    
  • 21. public void testLogin() throws Exception {! Instrumentation instr = getInstrumentation();! ! ActivityMonitor monitor = !instr.addMonitor(MainActivity.class.getName(), null, !false);! Intent intent = new Intent(Intent.ACTION_MAIN);! intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);! intent.setClassName(instr.getTargetContext(), ! !LoginActivity.class.getName());! instr.startActivitySync(intent);! instr.waitForIdleSync();! instr.sendStringSync(“clement");! instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);! instr.sendStringSync(“magic");! instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);! instr.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);! ! Activity mainActivity = !instr.waitForMonitorWithTimeout(monitor, 30000);! assertNotNull(mainActivity);! }!
  • 22. public void testLogin() throws Exception {! LoginActivity loginActivity = !startActivity(LoginActivity.class);! assertThat(loginActivity)
 !.sendString(”clement")
 !.keyDownUp(KeyEvent.KEYCODE_DPAD_DOWN)
 !.sendString(”magic")
 !.keyDownUp(KeyEvent.KEYCODE_DPAD_DOWN)
 !.keyDownUp(KeyEvent.KEYCODE_DPAD_CENTER)
 !.startsActivity(MainActivity.class);! }!
  • 23. From  a  bit  beMer  …  to  being  efficient   Version 2 Version 3 Version 4 •  New features •  Brandings •  More brandings •  Bad ratings •  Quality++ •  Quality++ •  Bigger team •  New features •  Socialization o  Maven o  Androlog o  Jenkins o  Rindirect o  Testing using o  Marvin o  Roboject instrumentation tests o  Became really o  Apache Ant complex Copyright  ©  2010  –  akquinet  AG   23  
  • 24. Rindirect   Sophis#cated  modularity  for  Android   •  Android  does  not  support  reusing  components  from  another   applica=on   •  Package  conflict   •  Resources  not  found  in  R   •  Libraries  do  share  the  same  package   •  Rindirect  removes  those  limita=ons  by  genera=ng  the  missing/ required  R  files   •  Automated  during  your  build  process   •  Allow  advanced  modularity   •  Improve  component  sharing     Copyright  ©  2010  –  akquinet  AG   24  
  • 25. Roboject   A  CDI  for  Android   •  Android  code  can  be  really  =resome   •  A  lot  of  asynchronocity   •  Service  bindings,  intents…   •  Predominance  of  the  main  thread   •  UI  code  can  be  smaller   •  Retrieving  a  View,  Senng  a  Layout   •  Roboject  dras=cally    simplifies  Android  code   •  @InjectX  where  X  is  Service,  Intent,  Extra,  View,  Layout…   •  Addi=onal  lifecycle  method  :  onReady   •  Reduce  the  amount  of  code  required  to  develop  Android   applica#ons   •  Minimum  run#me  overhead   •  Extensible     Copyright  ©  2010  –  akquinet  AG   25  
  • 26. @InjectLayout(R.layout.searchinputactivity)! public class TweetSearchActivity extends RobojectActivity {! @InjectView! private EditText editTextSearch;! ! @InjectView! private Button buttonSearch;! ! @Override! public void onCreate(Bundle savedInstanceState) {! super.onCreate(savedInstanceState);! ! buttonSearch.setOnClickListener(new OnClickListener() {! public void onClick(View arg0) {! Intent intent = new Intent(TweetSearchActivity.this, ! ! !TweetListActivity.class);! intent.putExtra("searchTerm”, ! !! ! ! !editTextSearch.getText().toString());! startActivity(intent);! }! });! }! }!
  • 27. From  a  bit  beMer  …  to  being  efficient   Version 2 Version 3 Version 4 •  New features •  Brandings •  More brandings •  Bad ratings •  Quality++ •  Quality++ •  Bigger team •  New features •  Socialization o  Maven o  Androlog o  Jenkins o  Rindirect o  Testing using o  Marvin o  Roboject instrumentation tests o  Became really o  Apache Ant complex Copyright  ©  2010  –  akquinet  AG   27  
  • 28. An  example   would  be  useful   right  about  now   If  we  have  Fme…  
  • 29. StAnD   ü Androlog   ü Maven-­‐Android-­‐Plugin   ü Jenkins  Plugin   ü Marvin   ü Rindirect   ü Roboject   ü Enterprise  Extensions   Copyright  ©  2010  –  akquinet  AG   29  
  • 30. Q  &  A   Questions ? hYp://stand.spree.de   Copyright  ©  2010  –  akquinet  AG   30