The growth of software development business is directly proportional to the growth of client business. Sometimes more than one clients come up with the same problem and we provide a different solution for each of them. These things will cost more time and development cost, which will affect the client budget.

Instead, creating an optimal solution for a problem and allow multiple customers to rebrand it in a way it looks like they made it will avoid the process of reinventing the wheel. It looks prettier and cost-efficient.

White Labeling is the process of buying and branding a product/service and reselling it under buyers brand name.

  • Same application with different presentation for different brands.
  • The same set of features targeted to the different set of audience.

Example: Company A, a white label software provider who creates a software for travel agencies. That software will be sold to many travel agencies. Each travel agency rebrands the software with their own logo and releases it in their name.

White Labeling is not a new term, which is widespread in products like electronics, consumer goods, etc..

Advantages of White label Softwares :

  • More time to focus on brand and core business instead of spending time on technical things.
  • Reduce Development Cost.
  • Time To market will be reduced to Zero.
  • Regular Service Updates.
  • Ease to revamp the UI completely or partly based on user analytics and engagement.

Things to consider before buying a White label Softwares :

  • White Labeled products don’t give many options to customize, which narrow down the control over the product. In the end, two rival company products look same in terms of layout and functionality except branding. It’s doesn’t look fine in terms of competitive business.

At present, white labeled apps are equated only to differently themed apps. But it is more than that. white-labeled apps are apps with same functionality presented differently. It could be a color theme, brand-specific assets, navigation, UI Structure etc.

MVP architecture makes UI passive and easily replaceable with a different design. We can make use of MVP pattern and android product flavors for white labeling to have complete customization options.

Keeping Model and Presenter Logic within main module which can be shared across multiple flavors(View wrapper)

Consider a scenario that a company is developing white labeled e-commerce android apps.

The basic building blocks of an e-commerce app are as follows,

  • Functionalities
    • Network operation – hit server, parse & validate response etc
    • Local database interactions
  • User-Interface
    • Display server response as per UX design – XML layouts, custom views etc
    • Handling user interactions like click, long-click etc

Functionality components are kept in main module. All User-Interface components are kept under flavor, which will call functionality from main module.

Whenever any security update or any functionality changes required[Eg: server updates cart validation process], updating main module will solve the problem in all apps. In the end, Client will have full control over their App.

Configuring White Labeled Products using Android Flavors :
Consider, We have three clients named Alpha Agency, Beta Agency, and Aqua Agency. In-app build.gradle file, we will add these flavors.

Let’s Gradle sync and check out new flavors in Build Variant tab. Put all functionality code in main module. Create folders under src with flavor name and corresponding flavor codes will be added to its respective folder.

To build and run a particular variant, Select the variant from Build variant tab and click Run Button in Android Studio.

To generate apk for a particular variant, Run gradlew assemble<Variant Name>

Android App based on MVP Architecture :

White Labeled Android App based on MVP Architecture :

Shared Code as SDK :

The functionality code, whatever we kept under the main module can be made as SDK aar file. The client can make use of that SDK and build UI[Activity, Fragment, Views etc..] on top of it to create the app, without worrying about API’s, Security etc….