Agile Android Software Development Sample
Agile Android Software Development Sample
com #4082685
Contents
Preface
10
11
12
Recommanded references . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
15
16
16
16
17
18
18
18
18
Android Emulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
18
CONTENTS
Testing the Test Environment . . . . . . . . . . . . . . . . . . . . . . .
18
19
19
21
22
Setting up Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
22
22
22
22
22
23
23
23
23
Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
GitLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
23
25
26
Setting up Redmine . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
26
Jenkins integration . . . . . . . . . . . . . . . . . . . . . . . . . .
26
GitLab integration . . . . . . . . . . . . . . . . . . . . . . . . . .
26
26
26
26
26
CONTENTS
26
27
27
29
30
30
Part 6 : Scaling
31
Automation strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32
Automated deployment . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32
Team collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32
32
33
. . . . . . . . . . . . . . . . . . . . . . . . .
34
Monetization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
34
34
CONTENTS
Preface
Android can be a lot of things depending on your point of view.
For Google, Android is a vehicle to expand their business into new areas where
they were absent a few years ago. Google has evolved from a web search engine
into a company with many product lines and businessesfrom mobile phones,
music, and books to video-on-demand. With the release of Android L around
the corner, you can also add TV and wearables to that list.
For mobile manufacturerssuch as Samsung, LG and HTCAndroid is an
Open Source mobile operating system (OS) they can tweak and use without
paying royalties.1
For users, the Android OS is less visible but is nevertheless a critical piece of
their daily activities. They depend on Android to send and receive emails, chat,
take pictures, entertain, and much more. Average users are not power users,
and as such they will want quality apps that will run without crashing.
For us as developers, Android is a way to express our creativity (outside of
our 95 routine), learn mobile software development, and make some money
on the side. Regardless of the reason that brings you to Android software
development, you are (or will be) faced with the same problems that fellow
Android developers encounter every day. These include: fragmentation, legacy
code, bad code, ineective monetization, and so forth. Most of these burdens
can be avoided or mitigated by using the right tools and techniques combined
with an agile mindset. These eective techniques and tools can help you enjoy
Android programming even more by freeing up your time, so you can really
developinstead of just xing problems, looking for answers on StackOverow,
avoiding pitfalls, or rewriting the same boiler plate code over and over again2 .
By the end of this book, you should be a more productive and, therefore, happier
Android software developer. You would be surprised what a happy developer
1 If
you omit the fact that Microsoft collected Android patent royalties
from
Android
smartphone
manufacturers.
(http://www.businessinsider.com/
microsoft-earns-2-billion-per-year-from-android-patent-royalties-2013-11)
2 My denition of boiler plate code is this: Any code that doesnt add value to the nal
product. In our case, the product is an Android app. In Lean Startup terms, its synonymous
to waste (waste of time, resources, money).
CONTENTS
can accomplish!
or Java. You should also have some basic understanding of source code control
(preferably Git), shell scripting and Linux (if you know how to open a command
shell, you will do great).
The techniques and tools shared in this book are presented mostly in the context
of a team of onethat is, one indie developer who wants to take his Android
development workow to the next level. The concepts presented in this book
can also apply to larger teams, but this is not our main audience.
To get the most from this book, you should already have read one or more
entry-level books about Android programming (see the following Recommanded
References section), and you should already have released one or more Android
apps to Google Play.
This book does not cover Android basics, but it does its best to address all those
questions you may end up with after we present advanced topics. In the case
where some intermediate to advanced knowledge is required to fully understand
a topic, you are provided with references to look up.
Additionally, if you have some experience with Agile software projects, this will
give you a head start, but it is not required.
Finally, if you are an experienced developer working full-time for your bosss
software companyand dreaming of doing your own thingsyou will nd food
for thought in this book. Likewise, if youre looking to improve your Android
programming workow, learn new tools and techniques, develop more agile
appsand even make some money with Androidthis book is denitely for
you!
10
CONTENTS
If some examples or scripts dont work as expected in your development environment, I encourage you to submit a bug report to me with as much detail as
possible (and if you happen to nd a solution specic to a platform, send that
as well). If I can help you, I will, or another reader might be able to give you a
hand.
I designed the content of this book as a greeneld project (that is from scratch
or without the legacy) and for a team of one or a two-pizza team5 in mind. At
times, the tools and processes I present will seem like killing a y with a bazooka
if youre a lone developer, but they will help you structure your work and keep
you organized. In fact, if you end up growing your app business (and I hope you
will!), you will be grateful that you have observed a Spartan discipline with your
Android projects because the best practices already will be assimilated by you
and your team, and they will serve as the cornerstone of your Android business.
All designs, processes, examples, concepts, and such presented in this book had
to meet the following criteria before being included:
Must be scalable;
Must respect the Dont Repeat Yourself (DRY) principle and be automated
if possible;
Must be agile (that is, tolerant and adaptable to change);
Must reduce or (better) eliminate waste (for example, time, money, resources);
Must not get in the way of the developer.
All of this was taken into account for the sake of helping you reduce the timeto-market for your apps and let you focus on developing great ones.
11
In Part 1, I present the techniques I use to monitor the evolution of the market,
so I am alerted when new trends or opportunities surface. I also present how
to select tools among equivalent alternatives. In Part 2, we set up and present
the tools I propose to ll your Agile Android developer toolbox. By the end
of Part 2, you will have set up a development environment that will help you
build our example application. In Part 3, building upon what weve learned in
the previous chapters, I teach you how to optimize your development process
by automating tedious or repetitive tasks, so we can concentrate on tasks with
added value in building our nal app. Then, in Part 4, we look at software
management using Agile tools and methodology. We also talk about subjects
like behavior-driven development (BDD) and TDD to help us document our
code and designs. In Part 5, we locate and eliminate sources of waste. We
follow some theories provided by the Lean Startup movement and learn how to
implement an eective feedback loop (Build-Measure-Learn loop) for Android
software projects. In Part 6, I show you how to use cloud computing to your
advantage and scale your builds and tests to multiple environments. Finally,
in Part 7, I talk about more advanced topics, such as marketing for your apps,
publishing, and monetization tips and techniques.
I hope you enjoy the ride!
12
CONTENTS
Google Group:
https://groups.google.com/forum/?hl=fr#!forum/
agile-android-software-development
Google+ community:
https://plus.google.com/u/0/communities/
106666596834203709065
Mailing List: http://eepurl.com/XTV8H
You should also register for a free account on Bitbucket to access the Agile Android Software Development repository : https://bitbucket.org/esavard/
agile-android-software-development. You will be able to get all the examples,
scripts, and much more from the Git repository.
This icon illustrates that a section of text can be skipped and is provided only
to oer some depth to a topic but is not essential to its understanding.
RECOMMANDED REFERENCES
13
Recommanded references
If you need to deepen your knowledge or dust-o your Android programming
skills, I recommend you the following books :
Phillips, Bill, and Brian Hardy. Android programming : the Big
Nerd Ranch guide. Atlanta, Ga: Big Nerd Ranch, 2013. Print. ISBN10: 0321804333.
Mednieks, Zigurd R. Programming Android. Farnham: OReilly, 2012.
Print. ISBN-10: 9781449316648.
Clifton, Ian G. Android user interface design : turning ideas and
sketches into beautifully designed apps. Upper Saddle River, NJ:
Addison-Wesley, 2013. Print. ISBN-10: 0321886739.
Merci!
I hope that you have enjoyed what you have read so farit is only a small peek
at whats coming up next!
If not already, register to our free mailing list to be informed about Agile Android Software Development oreven betterpre-order your copy of the
book. Not only will you get the book at discount price (for a limited time) you
will also get an early access to preview chapters, cheat sheets, source code and
suchbefore everyone else!
tienne Savard
http://www.agiledroid.com