Categories: Mobility

Tools & Frameworks That Were Used to Build WhatsApp (Android)


 

The article talks about the tools & frameworks that got used to build WhatsApp mobile application for Android platform. The reason why I decided to write this article is the acquisition of WhatsApp by Facebook in $19 billion and, my curiosity on what could have gone in building such application from technology perspective. The objective is to let Android developers take a peek into WhatsApp Android application and, get appropriate information on tools & frameworks that could be used to build a messaging application such as WhatsApp. Thanks for reading it further.
Tools & Frameworks Used in WhatsApp

Following is a list of tools & frameworks that were found to be used in the most latest version of WhatsApp mobile application. Please give a shout if you disagree with one or more entries listed below.

  1. UI-focused
    • ActionBarSherlock: ActionBarSherlock is an extension of Android support library designed to facilitate the use of the action bar design pattern across all versions of Android with a single API. The library got used in components such as GalleryPicker, ImageGallery etc.
    • StickyGridHeaders: An Android library that provides a GridView that shows items in sections with headers. By default the section headers stick to the top like the People app in Android 4.x but this can be turned off. StickyGridHeaders also automatically sizes its rows to the largest item in the row.
  2. Integration with Google Maps, Google+
    • Google Play Services SDK: It helped WhatsApp take advantage of the Google-powered features such as Google Maps, Google+.
  3. Platform updates distribution
    • Google Play Services SDK: It helped in distributing automatic platform updates as an APK through the Google Play store. This made it faster for the users to receive the updates
  4. Media
    • Mp4Parser: As part of Mp4Parser, ISOParser and ISOViewer got used to  read and write the MP4 file structure and, visualize the MP4 box structure respectively.
  5. Messaging
    • Cloud to Device Messaging Framework: Android Cloud to Device Messaging (C2DM) is a service that helps in sending data from servers to WhatsApp application on Android devices. The service provides a simple, lightweight mechanism that servers can use to tell mobile applications to contact the server directly, to fetch updated application or user data. The C2DM service handles all aspects of queueing of messages and delivery to the target application running on the target device.In the application, there are two key components. They are C2DMBroadcastReceiver and C2DMRegistrar.
  6. Database
    • SQLite: SQLite is an Open Source database that supports standard relational database features like SQL syntax, transactions and prepared statements. The database requires limited memory at runtime (approx. 250 KByte) which makes it a good candidate from being embedded into other runtimes.
  7. Platform
    • Android SDK
    • AspectJ: A seamless aspect-oriented extension to the Java programming language that is used for modularization of crosscutting concerns, such as error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, and multi-object protocols.
What was done to decompile WhatsApp (Android)?

Following are set of things I did to decompile WhatsApp (apk) files. The same instructions could be used for any mobile app with apk extension.

From executing jd-gui command, what you get is Java source code file which could be viewed and studied. Following is the screenshot of JD-GUI tool displaying WhatsApp code.

fig: jd-gui displaying WhatsApp code

 

Recommended Books
Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. For latest updates and blogs, follow us on Twitter. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking. Check out my other blog, Revive-n-Thrive.com

View Comments

Share
Published by
Ajitesh Kumar

Recent Posts

Logistic Regression in Machine Learning: Python Example

Last updated: 26th April, 2024 In this blog post, we will discuss the logistic regression…

1 day ago

MSE vs RMSE vs MAE vs MAPE vs R-Squared: When to Use?

Last updated: 22nd April, 2024 As data scientists, we navigate a sea of metrics to…

3 days ago

Gradient Descent in Machine Learning: Python Examples

Last updated: 22nd April, 2024 This post will teach you about the gradient descent algorithm…

6 days ago

Loss Function vs Cost Function vs Objective Function: Examples

Last updated: 19th April, 2024 Among the terminologies used in training machine learning models, the…

1 week ago

Model Parallelism vs Data Parallelism: Examples

Last updated: 19th April, 2024 Model parallelism and data parallelism are two strategies used to…

1 week ago

Model Complexity & Overfitting in Machine Learning: How to Reduce

Last updated: 4th April, 2024 In machine learning, model complexity, and overfitting are related in…

3 weeks ago