What would be the right way of including smaller android apps, into one bigger if requirements are the following:
- little apps should be loosely coupled and should be developed separately
- bigger app should handle some common things, instead of each little app do it for itself.
- bigger app should now something about state of little apps, in order to do some decisions.
First thing that comes into my mind is some sort of plug-in pattern (although I don’t know much about it, so I could say something wrong), so that each little app should implement some common interface, and big app should use that interface when dealing with component.
Is that right approach?
Is this right way of thinking considering android as a platform?
Your best bet is to make each sub app a “library.” You create a workspace in Eclipse and create a new Android project and mark it as a Library.
You do that for each sub app.
You then have a non-library application that imports each library and uses each as part of the full application.
This means you don’t need to worry about writing a plugin interface, etc.
Also if you follow this sort of pattern, when you create a free vs paid application, you are able to just add another application and remove / change functionality as that one all needs and compile both from the same code base.
Update
Take a look at http://developer.android.com/tools/projects/projects-eclipse.html for some decent documentation.
This shows how to create both types of projects and how to reference them in your manifest which is the annoying part.
Update2
From comments it was asked if you can use a library Activity in a main application that imports the library.
You create an Activity in the library
Then you add details to your manifest
<activity name="com.example.myapp.library.MyActivity">This then let’s you use it there. You can even use a library Activity as your main startup Activity if that’s what you need.
You can also extend a library Activity by changing your manifest to
<activity name="MyNewActivity">Then create a new activity
Then just override what you want, call super to access your library method if desired, etc.
Feel free to ask questions.