This app is using a lightweight version of the Google Mobile Ads SDK

1,325 views
Skip to first unread message

Oleksandr Tereshchuk

unread,
May 31, 2017, 8:42:04 AM5/31/17
to Google Mobile Ads SDK Developers
Each time I try to load an Ad, i receive:
This app is using a lightweight version of the Google Mobile Ads SDK that requires the latest Google Play services to be installed, but Google Play services is either missing or out of date.

There is an old topic regarding this:
https://groups.google.com/forum/#!msg/google-admob-ads-sdk/Xur52sC6YTM/v3QBbm-7AgAJ


I'm using latest Ads SDK:
compile 'com.google.android.gms:play-services-ads:10.2.6'

It's not a lite SDK, so it should run on a device with any Google Play Services version...

My scenario:
Google Play Services v10.2.98 / Nexus 7 / Android 6.0.1
Custom Launcher application that displays DFP ads.
I create new Android user (as described here https://support.google.com/nexus/answer/2865483?hl=en)
All requests fail with mentioned message.

But here is the interesting thing - if I reinstall an application, it would show Ads again (would be able to load them without errors)...

Chris Feldman (Mobile Ads SDK Team)

unread,
May 31, 2017, 3:10:22 PM5/31/17
to Google Mobile Ads SDK Developers
Hi,

I've not been able to reproduce your error in our sample apps. Can you please see test your ad unit ID in the appropriate sample? If you can replicate the issue in the sample, please provide detailed steps for how to do so. I'll need to know which sample you're testing with, as well as your ad unit ID, and information about your testing environment (if different from what you've already provided). 

Thank you for reaching out to support.

Regards,
Chris Feldman
Mobile Ads SDK Team

Oleksandr Tereshchuk

unread,
Jun 1, 2017, 5:37:42 AM6/1/17
to Google Mobile Ads SDK Developers
I'm trying to narrow down this problem to see if it's something related to my code..
I see this error in logs on the first app start:

06-01 05:32:54.792 3389-3389/com.keypr.launcher W/DynamiteUtils: Failed to load module: module com.google.android.gms.ads.dynamite not found
06-01 05:32:54.793 3389-3389/com.keypr.launcher W/DynamiteUtils: Attempt 1 failed.
06-01 05:32:54.904 3389-3389/com.keypr.launcher W/DynamiteUtils: Failed to load module: module com.google.android.gms.ads.dynamite not found
06-01 05:32:54.904 3389-3389/com.keypr.launcher W/DynamiteUtils: Attempt 2 failed.
06-01 05:32:55.005 3389-3389/com.keypr.launcher W/DynamiteUtils: Failed to load module: module com.google.android.gms.ads.dynamite not found
06-01 05:32:55.005 3389-3389/com.keypr.launcher W/DynamiteUtils: Attempt 3 failed.
06-01 05:32:55.006 3389-3389/com.keypr.launcher D/DynamitePackage: Module could not be loaded.
06-01 05:32:55.007 3389-3389/com.keypr.launcher E/DynamitePackage: Failed to load ads dynamite module.
                                                                   android.os.RemoteException
                                                                       at czs.<init>(:com.google.android.gms:37)
                                                                       at czs.a(:com.google.android.gms:23)
                                                                       at com.google.android.gms.ads.MobileAdsSettingManagerCreatorImpl.getMobileAdsSettingManager(:com.google.android.gms:38)
                                                                       at com.google.android.gms.ads.internal.client.bc.onTransact(:com.google.android.gms:55)
                                                                       at android.os.Binder.transact(Binder.java:387)
                                                                       at com.google.android.gms.b.jd$a$a.a(Unknown Source)
                                                                       at com.google.android.gms.b.jo.b(Unknown Source)
                                                                       at com.google.android.gms.b.io$5.a(Unknown Source)
                                                                       at com.google.android.gms.b.io$a.c(Unknown Source)
                                                                       at com.google.android.gms.b.io.a(Unknown Source)
                                                                       at com.google.android.gms.ads.MobileAds.initialize(Unknown Source)
                                                                       at com.google.android.gms.ads.MobileAds.initialize(Unknown Source)
                                                                       at com.keypr.launcher.LauncherApplication.onCreate(LauncherApplication.java:70)
                                                                       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
                                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
                                                                       at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                       at android.os.Looper.loop(Looper.java:148)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

But if I restart application process - everything would be good.

середа, 31 травня 2017 р. 15:42:04 UTC+3 користувач Oleksandr Tereshchuk написав:

Oleksandr Tereshchuk

unread,
Jun 1, 2017, 6:13:25 AM6/1/17
to Google Mobile Ads SDK Developers
I'm gonna try to build some proof of concept for this bug later this week, but at the moment, situation looks as follows: if your application starts early during system boot (in my case, it's custom Launcher application) than there is very high probability, that Google Play Services application has not started yet. So DynamiteUtils tries to connect 3 times and then fails permanently until full process restart.

As a soft evidence of such behavior - I've downgraded (uninstalled updates) Google Play Services on a device, from 10.2.98 to 9.0.83. And then, I've installed my custom Launcher with 10.2.6 Ads library.
With 10.2.98 services, application should use "remote" ads loading mechanism by connecting to the Google Play Services, because it's latest version. Refer here https://firebase.google.com/docs/admob/android/lite-sdk
With 9.0.83 services, application should use "local" ads loading - so it does not matter if Google Play Services application has started or not.

So, I've tried to reboot device in both mentioned scenarios - got ads loaded (without RemoteException) only with older Google Play Services (9.0.83)

середа, 31 травня 2017 р. 15:42:04 UTC+3 користувач Oleksandr Tereshchuk написав:
Each time I try to load an Ad, i receive:

Chris Feldman (Mobile Ads SDK Team)

unread,
Jun 1, 2017, 12:16:07 PM6/1/17
to Google Mobile Ads SDK Developers
Hi,

Please do share a sample app once you've built your proof of concept. I've been unable to reproduce this behavior in our default samples. Once I'm able to replicate your workflow and see the issue for myself, we should be able to investigate further and hopefully help you find a solution.

Regards,
Chris Feldman
Mobile Ads SDK Team

Chen Chi

unread,
Jun 22, 2017, 1:16:13 AM6/22/17
to Google Mobile Ads SDK Developers
Hello, I also meet the same problem with the same error log. The problem happens in a 360 mobile phone, but it doesn't happen in other mobile phone, such as Samsung, lenovo and so on. 

Olexandr Tereshchuk

unread,
Jun 22, 2017, 4:35:15 AM6/22/17
to google-adm...@googlegroups.com
I've tested this issue on multiple scenarios.
It looks like the reason you see it on 360 mobile phone is very similar why I see it my device - there must relatively high load on device start-up (comparing to CPU power), so Google Play Services start would be delayed.
Unfortunately, I don't have time to further triage this issue right now.

--

---
You received this message because you are subscribed to a topic in the Google Groups "Google Mobile Ads SDK Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-admob-ads-sdk/xu7rti1BRgE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-admob-ads-sdk+unsub...@googlegroups.com.
To post to this group, send email to google-admob-ads-sdk@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Chris Feldman (Mobile Ads SDK Team)

unread,
Jun 22, 2017, 11:56:51 AM6/22/17
to Google Mobile Ads SDK Developers
Hi,

We aren't able to look into this issue without reproducing the error on our end.

@Olexandr, as previously mentioned, with the complexity of your workflow I'd need to see some code to ensure that we're testing under the same circumstances. Sending a zipped sample that I can build is the best way to accomplish this.

@Chen, do you also think that your error is related to starting your application early during the system boot? (that was Olexandr's problem) If so, I'd also ask that you send me a zipped sample app that would allow me to reproduce the issue. If you think the error is unrelated to when you start your application then I still need some more information. Can you share with me specifics about the device you're testing with, the version of the SDK that you're using, and any detailed steps for reproducing the error?

Thank you both for reaching out to support. Let me know if you need any further support.

Regards,
Chris Feldman
Mobile Ads SDK Team

Oleksandr Tereshchuk

unread,
Aug 5, 2017, 12:29:51 PM8/5/17
to Google Mobile Ads SDK Developers
Hi,

I have finally found a way to reproduce this issue on stock Android device.

Prerequisites:
1) Nexus 7 (2013) / Android 6.0.1
2) Clone https://github.com/googleads/googleads-mobile-android-examples (for some reason forking is not working on GitHub currently)
4) Latest GooglePlayServices.apk - can be pulled from device directly or obtained from Internet

Steps to reproduce:
1) Install modified googleads-mobile-android-examples/doubleclick/CustomRenderingExample
2) Press HOME button on a device and make CustomRenderingExample application a default launcher choice
3) Invoke adb install -r GooglePlayServices.apk
4) Previous step would force-kill your application so you have to immediately tap HOME button (as soon as you see that application disappearing). This is due to the fact that device has 2 Launchers installed so it would not automatically restart your secondary one.
5) Now you should see a toast Failed to load ad: 1

This error is caused by a fact, that Play Service is currently restarting so attempts to communicate fail.
As a result you would see Failed to load ads dynamite module. message in logs.
Clicking on "REFRESH AD" button would show "Failed to load ad: 1" toast and print log:
08-05 19:25:38.079 22811-22811/com.google.example.gms.customrenderingexample E/Ads: This app is using a lightweight version of the Google Mobile Ads SDK that requires the latest Google Play services to be installed, but Google Play services is either missing or out of date.

If you force-kill the process (restart it) - everything would work again.

So, I was right from the beginning when saying that Dynamite utils would try 3 times to connect to a remote Play Services and than decide to give up completely. This issue is especially painful for Launcher application developers like me - such apps are not started by user directly, but by an Android system so they usually end up starting before Play Services is ready resulting in error log:


четвер, 22 червня 2017 р. 18:56:51 UTC+3 користувач Chris Feldman (Mobile Ads SDK Team) написав:
To post to this group, send email to google-adm...@googlegroups.com.

Oleksandr Tereshchuk

unread,
Aug 5, 2017, 12:31:03 PM8/5/17
to Google Mobile Ads SDK Developers
I can record a video demonstrating this issue if you still don't believe me than such scenario is possible :)

четвер, 22 червня 2017 р. 18:56:51 UTC+3 користувач Chris Feldman (Mobile Ads SDK Team) написав:
To post to this group, send email to google-adm...@googlegroups.com.

Chris Feldman (Mobile Ads SDK Team)

unread,
Aug 7, 2017, 3:19:47 PM8/7/17
to Google Mobile Ads SDK Developers
Hi,

Thank you for providing instructions for reproducing the issue. Our team is going to take a closer look at the issue and I will let you know as soon as I have an update.

Regards,
Chris Feldman
Mobile Ads SDK Team

Max Ukhanov

unread,
Aug 21, 2017, 5:29:30 AM8/21/17
to Google Mobile Ads SDK Developers
Hi Chris and Mobile Ads SDK Team,

Is there any news about this issue? Or maybe someone knows the workaround to avoid "Failed to load ads dynamite module." error?

Thanks.
Max Ukhanov

понеділок, 7 серпня 2017 р. 22:19:47 UTC+3 користувач Chris Feldman (Mobile Ads SDK Team) написав:

Chris Feldman (Mobile Ads SDK Team)

unread,
Aug 21, 2017, 11:07:41 AM8/21/17
to Google Mobile Ads SDK Developers
Hi Max,

We do not yet have an update regarding this issue. I will update this thread as soon as I have new information for you.

Regards,
Chris Feldman
Mobile Ads SDK Team

ashap...@keypr.com

unread,
Aug 23, 2017, 6:18:42 PM8/23/17
to Google Mobile Ads SDK Developers
I have just reproduced it on my device. I used case with two users. When I was creating the second user my launcher app (that uses play services) had the same error with the following stacktrace:

71 15834-15973/com.keypr.launcher E/DynamitePackage: Failed to load ads dynamite module.
                                                                     android.os.RemoteException
                                                                         at cyv.<init>(:com.google.android.gms:4)
                                                                         at cyv.a(:com.google.android.gms:0)
                                                                         at com.google.android.gms.ads.AdLoaderBuilderCreatorImpl.newAdLoaderBuilder(:com.google.android.gms:4)
                                                                         at com.google.android.gms.ads.internal.client.ad.onTransact(:com.google.android.gms:9)
                                                                         at android.os.Binder.transact(Binder.java:387)
                                                                         at com.google.android.gms.b.gx$a$a.a(Unknown Source)
                                                                         at com.google.android.gms.b.gf.a(Unknown Source)
                                                                         at com.google.android.gms.b.gp$4.a(Unknown Source)
                                                                         at com.google.android.gms.b.gp$a.c(Unknown Source)
                                                                         at com.google.android.gms.b.gp.a(Unknown Source)
                                                                         at com.google.android.gms.ads.AdLoader$Builder.<init>(Unknown Source)
                                                                         at com.keypr.commons.ads.a$2.a(Dfp.java:53)
                                                                         at com.keypr.commons.ads.a$g.call(Dfp.java:1319)
                                                                         at rx.internal.operators.SingleToObservable.call(SingleToObservable.java:39)
                                                                         at rx.internal.operators.SingleToObservable.call(SingleToObservable.java:27)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)
                                                                         at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
                                                                         at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                         at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                         at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                         at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                         at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
                                                                         at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
                                                                         at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.slowPath(OnSubscribeFromIterable.java:117)
                                                                         at rx.internal.operators.OnSubscribeFromIterable$IterableProducer.request(OnSubscribeFromIterable.java:89)
                                                                         at rx.l.setProducer(Subscriber.java:211)
                                                                         at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:63)
                                                                         at rx.internal.operators.OnSubscribeFromIterable.call(OnSubscribeFromIterable.java:34)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
                                                                         at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
                                                                         at rx.f.unsafeSubscribe(Observable.java:10346)
                                                                         at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
                                                                         at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
                                                                         at rx.internal.operators.OnSubscribeFilter$FilterSubscriber.onNext(OnSubscribeFilter.java:76)
                                                                         at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
                                                                         at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
                                                                         at rx.e.g$2.onNext(Subscribers.java:235)
                                                                         at com.stanfy.enroscar.goro.a.a$1$1.a(RxGoro.java:53)
                                                                      at com.stanfy.enroscar.go

Chris Feldman (Mobile Ads SDK Team)

unread,
Aug 24, 2017, 2:32:52 PM8/24/17
to Google Mobile Ads SDK Developers
Hi,

Thank you providing your logs. They should be helpful as our team continues to investigate this issue.

Regards,
Chris Feldman
Mobile Ads SDK Team

Reply all
Reply to author
Forward
0 new messages