Paper: I. J. Mojica Ruiz, M. Nagappan, B. Adams, T. Berger, S. Dienst and A. E. Hassan, “Analyzing Ad Library Updates in Android Apps,” in IEEE Software, vol. 33, no. 2, pp. 74-80, Mar.-Apr. 2016, doi: 10.1109/MS.2014.81.
This article explores the cost of app updates caused due to ad library updates in Android apps. Typically, app releases have non-zero cost from development and QA perspective. The cost may also vary based on the complexity of the app. If an update is being released, oftentimes it needs to go through a full QA pass. Even when an update is released to an app store such as Google Play, it is not guaranteed for customers to update. Customers may choose to skip an update if they feel that it could disrupt their existing experience. The authors posit that ad library updates may be impactful to the developer’s bottom line, and hence it is important for them to get out to customers.
The authors mention that about 51-60% of free Android apps have some sort of ad integration (with free apps accounting for ~91% of the overall apps available in app stores). The cost of performing ad updates, are categorized into the following by the authors: software maintenance (making changes for new ad library versions), app delivery delays (due to adoption rates can cause revenue impact), lack of ads (due to old ad libraries), and poor user experience (due to bugs in the ad libraries that have not been updated).
The data the authors have gathered has been done via crawling Google play and doing static analysis on downloaded APKs. They concentrated on apps that have at least 10 raters (effectively 5,937 apps / 13,983 app versions). They found that 65% of app updates included updated ad library, 44% included added ad library and about 28% included removed ad library. Even a stable app such as a calculator app may need to be updated due to its ad integration. They have categorized the top ad providers and have provided stats in regard to the number of updates they have required in 2011.
In regard to recommendations provided, the authors suggest developers to choose an ad provider that is stable in regard to frequency of library updates. Additionally, if the app relies on a webview, that can be updated more easily through a server-side deployment. Ads can be served through a webview owned by the developer. Though some of the ad targeting may be not as good as native ads when served through a webview as the ad may not have access to all the same data as if it was running natively. In Android, it is also possible to patch some code during runtime (for example Java code can be patched via classloader). This mechanism is fairly complex and thus the additional complexity would only be justified in exceptional cases. I chose to read this article due to my interest in Android. The uber takeaway for me from this article is to always question your dependencies when building and to have some data in regard to frequency of updates required by your dependencies and how that matches with your intended release cadence.