LairdPleng
LairdPleng

Reputation: 974

Managing a Rebrandable Android App

I have an app which is being developed for several different clients. The app is going to be exactly the same for each client, only with different company names, contact details, and logo graphics. All apps to be made available on Google Play.

Is there any way I can manage the apps so that I would only need to update the code once to publish the changes across all clients? ie If I make a change to the code, I could upload it once and all the apps would be able to update from there?

I though of making the apps on the Play Store essentially a skeleton apk, which could then download and install the proper APK and retrieve the appropriate custom data from a web service, then programatically handling checking for updated versions of the application apk. The only problem I can see here is that users would need to enable installations from unknown sources, which wouldn't be suitable for our clients.

Does anybody have any other ideas on how to accomplish this?

Upvotes: 1

Views: 147

Answers (3)

baash05
baash05

Reputation: 4516

Personally I'd make as much of the applications look based on a config file that you could package with the app. Images, labels and such could all be determined at run time. You'd have to find a way to ship or download the "config" files, but at one point (during install) the user would be connected.

Upvotes: 0

323go
323go

Reputation: 14274

1.) Make a container app and have it "provision" to the appropriate client, by downloading the custom bits online and storing it in private storage. You could, for example, download an XML file with elements defining the UI and references to the logo graphics, then apply those assets at runtime. If you wanted to go one-up, you could provide a launcher widget which would update to the selected client from downloaded assets.

2.) Write the core functionality in a library project in Eclipse, and then have custom applications for each client (with different assets and values.xml) include that library. All your business logic and the brunt of the UI would be shared among the clients, but the front-facing bits would be custom.

Yes, you would have to maintain several packages, and a release would be a bit of extra work. On the other hand, this is a very clean approach with maximum code reuse.

Upvotes: 3

LairdPleng
LairdPleng

Reputation: 974

Of course, one way to do this would be develop the app as a web-app. Then all the container app would need to contain would be a webview and details of the company that the app belongs to. The web service could then deal with all the requests.

The problem with this method is that you loose access to the android UI widget set. And, as far as I'm aware, you can't access features such as the devices location service from code within the webview?

Upvotes: -1

Related Questions