Mobile SDKs; love them or hate them, they're here to stay. They provide our apps with all sorts of functionality that would be incredibly time consuming to build and moreover, they give us another means to monetize our apps. Third party SDKs are in fact, quite popular. According to a study done by SafeDK on average, each Android app uses 15 third party SDKs - this number is even higher in the case of mobile games. While it would be difficult to argue that SDKs aren't useful, it's also hard for developers to really get a good idea of the amount of resources used by each sdk once the app is in production.
What makes a good SDK? Some of the common factors to consider while judging the quality of an SDK are: functionality, ease of use, and documentation. Some other attributes to consider are CPU usage, effect on battery, playing nice with other SDKs, and even network data usage.. As we mentioned, each android app uses 15 third party SDKs on average. It becomes very important for each SDK to function in harmony. The effect on CPU, battery and data consumed per session are all also important for apps because each of these could lead to users uninstalling the app. Let's discuss data consumed per session - this is an important factor when you consider users who have limited data plans.
So how does one know which SDK is consuming more data per session? What are the number of transfers per session? There are a number of ways you can look at the traffic requests made by various SDKs. You could route the app traffic through a proxy, run the app on your test device and see what's happening (unfortunately this will only show you a the results of your own individual tests which can give you an idea, but likely isn't statistically significant. Another way is to use something like New Relic's Mobile Application Monitoring tool - this gives you a whole suite of tools and the results would be from real productions users. The downside here is that it's expensive. A third option is that you could use PacketZoom's new free Developer SDK (aka HttpOptimizer) which provides all the statistics for third party data transfers and is also able to capture the specifics domains and URLs that are causing the largest amount of data consumption.
The chart below is from a gaming app with traffic mostly in USA and Canada with ~10K DAU (Daily Active Users). Like many mobile games, this app also relies on ads for a large fraction of revenue for publisher. Hence the preponderance of ad SDK's in its list of data consumers.
In the chart, both 'vid.applovin' and 'edge.adcolony' are ad SDKs but each one has different data size per session (~13Kb and ~10Kb respectively). This simply could be because 'vid.applovin' is serving more ads compared 'edge.adcolony' because that is how the developer prioritized their ads, or it could have something to do with the frequency that the ad content is refreshed or the size of the individual ads. What you do get is greater insight into what the SDKs in your app are actually doing. You should think about this as you consider which SDKs to include in your app. Mobile data is expensive (and frequently slow) for the users, especially in developing countries. As app developers, it makes sense to to keep an eye on data usage metrics to accommodate the global user base.
Our HttpOptimizer SDK does a lot more than simply keep track of data usage by other SDKs. It gives app developers a way to collect detailed network performance statistics about their apps and is completely free. But that's not all! This SDK also allows developers to automatically optimize their code at run-time for thousands of different network conditions faced by their apps. A lot more details about this offering can be found on our developer page.