2

I have been a web developer for the last 10 years, with a little Java GUI (Swing) and VB 6 development experience in my career.

However I have been tasked with supporting an enterprise which has outsourced the development of Android based applications with a backend we do do not control, and evaluate a possible additional backend provider. I have been tracking developments over the last few years, and am also familiar with the Developer Style Guide http://developer.android.com/design/index.html

While I understand the basic software development life-cycle for database driven web applications, I would like to understand the issues with regard to Android development which may include:

a) Tools selection

b) Installation on handsets

c) Unit, Integration and load testing

d) Handling poor connectivity - since the apps may be used to collect data in low network quality areas

e) Local data storage considerations

f) Memory considerations - considering mobiles are low memory devices other than PCS

g) Application flow designs

h) Using pre-built application widgets and selection widgets for use

i) Code Quality evaluation

j) Version control - are there any special issues

k) Automated build, packaging, deployment and upgrades + Pushing over the air updates

l) Application design - wire framing and application flows

Thanks in advance

Stephen Senkomago Musoke
  • 3,528
  • 2
  • 29
  • 27
  • This is very broad and does not really fit the SO format. Also it's not a question :) You might consider breaking it down and/or rephrasing to ask about specific problems. – Nikolay Elenkov Jun 04 '12 at 05:16
  • Any suggestions because that is my current problem, while I understand the issues for web applications, I am trying to get a high level understanding on what is different on Android, or what is different, or what to look out for – Stephen Senkomago Musoke Jun 04 '12 at 05:28
  • SO is generally not good for very high level questions. To start with, your problem it's not quite clear -- the list above looks like it's about issues on the client, not on the backend. Do you have a native app, a 'real' webapp (using the browser), or a hybrid app (native app with a WebView)? Does the backend expose an API? Are you looking to rebuild/fix both or just the backend? You might want to ask something like: 'we have such and such backend, we want to make it more fast/scalable/secure, etc in order to support X mobile devices, what framework/platform/database should we use? – Nikolay Elenkov Jun 04 '12 at 05:40

1 Answers1

1

This is actually a very broad question, and its upon individual, what design pattern one can choose for his application. Any design pattern that works well for OOP, can be used in Android application. Sir, you are a very experienced in your field, and I am just a novice android developer, but still I would like to answer some of your questions. For many of your questions, http://developer.android.com/design/index.html is enough for answers.

Installation on handsets: Installing app on handsets is very easy, since you just need to connect your mobile/tablet device to your PC and just run your app, this will automatically install your app on device. Another way is to copy the .APK file that has been created for your app when you run it on emulator, and paste it inside any folder of your mobile/tablet device. Then go to that folder and install the app. As simple as that.

Unit teesting in Android: For this please see http://developer.android.com/guide/topics/testing/testing_android.html This is a very useful link. And also, this is very easy to implement.

Local data storage: For this please see http://developer.android.com/guide/topics/data/data-storage.html

Memory Considerations: From my personal experience, as mobiles are low memory devices, or more specifically, android OS allocates a fixed amount of memory for each app that is installed on it, you need to use your resources very well, and clear the resources as soon as possible after use. One common error you get encountered with is OOME in android. For more details please see my answer on: bitmap size exceeds Vm budget error android

Code Quality Evaluation: For this, there is a plugin for eclipse, PMD, it checks your code and find out all the programming errors you have done, or it tells you which statements that you are using, are not following the programming standards. To download PMD: http://sourceforge.net/projects/pmd-eclipse/ and to install it: http://pmd.sourceforge.net/eclipse/

Version Control: If this question is about Android version then as per suggested, you should develop an app that can run on any device with any Android version. But you can also develop an app that should work with only specific type of devices with specific android version.

Handling poor connectivity: You better know its answer since you are a web developer, but what I can suggest is, every time, before doing anything that requires internet, before proceeding, first check whether internet is available, if yes then only proceed or else provide a corresponding message to user regarding the issue.

Design issues: According to me, you can use any design pattern, but always see, how efficiently you can use your available memory and time. Always try to minimize number of clicks, that is, user should be able to use any feature that your app provides, with minimum numbers of clicks.

I hope I have solved some of your questions, Thank you :)

Community
  • 1
  • 1
Shrikant Ballal
  • 7,067
  • 7
  • 41
  • 61
  • Please provide some feedback, because its unclear for me whether it solved your question, or do you require some more explanation? – Shrikant Ballal Jun 04 '12 at 07:36
  • Thanks for the answer. I was reading through the links but here are my immediate questions: Version Control - is there any special consideration for Android code? Design issues - what are the major providers of widgets, and what considerations need to be made when selecting a widget provider? Thanks again – Stephen Senkomago Musoke Jun 04 '12 at 07:58
  • For version control: see http://developer.android.com/resources/articles/backward-compatibility.html – Shrikant Ballal Jun 04 '12 at 08:01