<--- DG added google analytics -->

How We Test Android Apps w/ Maven, Jenkins & Robotium

This is how we set up our android testing environment.  It is a process which makes maintaining android app quality incredibly simple.

We start off by using maven-android-plugin to “mavenize” our android project.  One big advantage of this is using maven’s convention over configuration.  Another big plus is that it ties your project together nicely so you can have testing project and a main project.  Likewise anyone starting off using your app should be able to quickly get all dependencies which can be a nightmare at times.  It also ties the project nicely together for Jenkins/Hudson which you will see later.  Here is a great overview of Maven & Android and how to set it up by Sonatype http://www.sonatype.com/books/mvnref-book/reference/android-dev.html.

Then we work on our testing project.  We basically concentrate on two types of tests here.  Functional UI tests which we use Robotium (you say click here, expect this text). And then we use Android JUnit tests as described by the official android developer guide for testing things like variables during the app life-cycle.  These are all contained in the testing project which with the help of maven will run during the test life-cycle.

We then use the projects parent pom (which ties everything together – test project & main) and use it within a Jenkins/Hudson instance.  Jenkins/Hudson (I wont get into the specifics of both but for the purpose of our testing they are virtually the same) is awesome.  We use our maven parent pom.xml and set up a new maven project in Jenkins/Hudson with the maven goals “clean install site.”  If your not familiar with Maven, this is basically telling your Jenkins/Hudson server to use this projects settings to test and build your android app.

Here are a few plugins to Jenkins/Hudson which makes this testing environment even greater.  PMD has some android specific rulesl that are worth their weight in gold, so we plug that into our continuous integration server (Jenkins/Hudson).  Still with us?  Good.  We use findbugs as android is written in java and findbugs rocks.  Then we use the android emulator plugin which is where the magic happens.  Note:  All three are installed in Hudson/Jenkins using “Manage Hudson” -> “Manage Plugins” -> “Available” tab.

From here, we see the big benefit of writing all those unit tests we described before (Robotium & JUnit).  Using android emulator plugin, you can test against a wide variety of android devices very easily and painlessly.  These tests drastically simplify the task of testing.

From here, we set it to poll our SVN every 30 minutes for changes.  So from here you can easily maintain your app against all android OS’s, device displays, and locale.  Just check your code in as normal and monitor your builds for any issues (your build will fail if a unit test fails on a device and you can quickly check its log).

I hope this helps anyone wanting to improve the quality of their android tests.

How to make a good & cheap app promo

Recently, I decided to make an android app promo video.  I always knew about the promo category on the android app market, but surprisingly few amount of apps have a promo video out there. Fewer have a good promo video.  Dear Foursquare & MLB At Bat, you can’t humor me take an hour and make a promo video?  I thought I’d dispense some advice on common pitfalls behind app promo and how to easily create a good promo video.

First a quick synopsis of why I decided to make a better app promo.  This was not simply because there was a slot for the video on our android app page.  It was because I want to increase our downloads.  At first I was skeptical this would help.  But after Tim Ferriss’ “4 Hour Body” trailer , I saw more value in it.  I had zero interest in “4 Hour Body” until I saw his promo video. I think this goes to show that promo videos can be good for any category and I would strongly recommend creating one for your product or service.

Provided that I convinced you to make a promo video, here are some pitfalls we have seen that you should try to avoid.

There is also a large discrepancy of promo videos out there for the android market place.  Take Beautiful Widgets.  They have a “promo video” but in reality its a powerpoint to music.  Are you trying to sell to business executives?

There are a lot of apps that have a tutorial or demo video, which is what I originally had for Martini Lock.  This is ok, like Evernote, but it doesn’t really sell the app.

Then you have the “sloppy” promo videos.  The game “slice it” has a fun, commercial like promo video.  But then at the end you get the message “coming for Android!!”  Really?? Coming for android? How is it being sold and downloaded on my phone then.  My next question is I wonder if the developers pay that little attention to the app’s details and how good the game actually is.

Then you have the “funny” promo videos. Winamp’s video would be the best commercial on TV if it was shown, it’s that good.  This was, however, more money than we wanted to spend on a promotional video

Then you have “big budget” promo videos.  Angry Birds Rio is a great example.  But in all reality you don’t have that budget.  Which brings me to how we made our video….

One reason I put this off was honestly a lack of knowledge.  I thought it would be hard, or at least harder that it was.  The reality is that it is dead simple using Animoto.  Getting started on any task is always the most difficult part.

I would advise taking a few quick videos of your app, some screen shots and throwing them on Animoto to see what they look like in a test video.  You’ll quickly get an idea of what you do and don’t like.  Our total time making these professional looking videos was a few hours.  If you have already made your app and are pot committed, so why not add a good promo video to increase downloads?

Piano Lock Screen Released!

Piano Lock Screen is our newest innovention and baby (hence the website redesign).  This new android app lets you create, customize and use the piano to develop a custom tune to unlock your phone.



-Easy to set up lock screen replacement application

-Sound activated (touch piano keys)

-Secure, only you know your music combination

-Choose your own home screen launcher application


As always, let us know if you would like to see in our upcoming enhancements.  We are striving to make our apps as simple to use as possible and adopting concepts from 37 Signal’s books “Rework” and “Getting Real“.  More on how we blend together their ideas with app development in future posts.

AndroidTapp Martini Lock Review

Martini Lock has just been reviewed by AndroidTapp.  Their consensus, 3.6 out of 5.  Tough but fair in our opinion.  Their consensus:

Should you Download Martini Lock? You should download Martini Lock if you are looking for a fun application to use as your lock screen and show off to your friends! The application runs well and is very easy to use. However, I would not recommend it as a permanent lock screen replacement due to it’s lack of user customization.


Check out their full review at http://www.androidtapp.com/martini-lock/ .

Calculating a Winning NCAA Bracket

I thought I’d post something different here and share how I mathematically calculated a winning NCAA bracket.  Following this formula put my bracket in the top 4% of ESPN’s bracket challenge and won several of my smaller pools.  It also correctly picked Connecticut as the champion and had VCU in the sweet 16.  Got your attention now?  Here is what I did:

(season winning percentage) * (conference tournament score + 1) * (number of teams that got in from their conference) = score

I made conference tournament score 5 points for first, 3 for second and 1 for third.  Whatever team has a higher score when they matched up, I picked.    If you are still curious on these calculations, see the links below.

I also applied this same formula to last 2010′s tournament and it ended up correctly picking 50% of the sweet 16, 50% of the elite 8 and 50% of the final four.  That may not sound like much, but would be more than enough to clean house in Vegas with some bets.  Bubbleware Technology is not responsible for any Vegas related injuries or bets.  My 2011 bracket is below.

Martini Lock Update 2.0

We’ve recently pushed out an update to increase stability.  We found an undocummented API change made by Google in the SensorEventListener class in Android 2.3.3.  In non-nerd speak, the shake wasn’t being detected in newer Android phones.  For those of you curious on the technical details see the stackoverflow post here.

On a related note, we have really increased the quality of our code being produced by setting up a development ecosystem to promote continuous integration.  We integrated many valuable features around our code which will result in high quality releases going forward.  More on this in a future post.

Martini Lock Update 1.8

Martini Lock has just been updated to version 1.8!  This update is designed to make the app as simple to use as possible.  Also we have made a few design changes to help overall appearance.  Check out our official market page for new screen shots.  The update also includes:

  • Date displayed
  • Restarting lock when phone reboots.  (I.E. just set once and forget it now)
  • Better tutorial messages
  • Design uplift
  • Bug fixes discovered by Static Analysis & Unit Tests
  • Many other bug fixes

As always, let us know what you want to see in future releases!

Android Market Place Listing!

The android market has finally made an official site listing all the apps with the option to download them.  Head over to our download section for a quick link to download martini lock or click here.

Ecosystem Uplift!

Sorry for the long hiatus on posts.  We have been busy working on uplifting our current applications to use the SDK R.7 and setting up a better development ecosystem around our code.  Hindsight, branching off every minor release would have been a good idea (to track down line numbers in the error reports).  But a solid ecosystem will give us this advantage going forward.  Also we will try to address all the issues brought forth by PMD and Findbugs.  Furthermore unit tests (JUnit) will be implemented going forward.

I apologize to those of you who don’t speak geek, these improvements should help us find bugs in Martini Lock and other future applications.  Look for another minor update to Martini Lock (v.1.5) soon!

Martini Lock Update 1.4

Martini Lock version 1.4 has officially been released!  The 1.4 update of Martini Lock concentrates on fixing minor bugs.  If you have anything you want to see in our next release, please let us know!


Optimized by SEO Ultimate