The CommonsBlog


Why The Play Store Thinks Your App Has Ads... When It Doesn't

The Play Store is rolling out mandatory declarations of whether or not your app has ads. As part of this, they are running some automatic ad-SDK detection algorithms on your app. According to this Stack Overflow question, those algorithms may be a bit over-aggressive, reporting that you have AdMob when you are not using AdMob.

As a tiger-striped rabbit named Tanis.7x points out in an answer, the problem in this case comes from Play Services and transitive dependencies.

If your app depends upon com.google.android.gms:play-services, you are pulling in vast swaths of the Play Services SDK, including play-services-ads, the portion of the SDK that ties into AdMob. Switching to more granular dependencies may help here. In the case of the person who wrote the original Stack Overflow question, they really only needed play-services-maps, and by switching to depend upon that instead of play-services, the AdMob detection problem cleared up.

However, bear in mind that even some finer-grained Play Services artifacts will depend on play-services-ads. play-services-all-wear definitely depends upon play-services-ads. Tanis.7x reports that play-services-analytics depends upon play-services-ads, though that seems to be limited to version 8.1.0. Others may crop up in the future.

(and if you think that play-services-analytics case was just some random bug, play-services-location even today depends upon play-services-maps, which is a clear case of the tail wagging the dog)

It is also possible that the right ProGuard and other minification settings for your release build would help here, as perhaps something is being left behind that the Play Store algorithm is detecting. Alas, we have no great way of telling exactly what the Play Store is looking for.

Another Stack Overflow user, in a separate answer on the question, indicates that Play Store support staff said to leave the ads switch on “no”, despite the detected SDK. That makes sense, as you are declaring whether your app shows ads, not whether your app has code that might relate to ads. However, I still encourage you to try to clean this up, as future automated takedowns might sweep up your app, if they don’t improve their algorithms by then.


Need a speaker at your Android development meetup? Mark Murphy is available, in person in the Boston/Pittsburgh/DC triangle, or by remote anywhere in the world! Contact Mark for details!