Android Error: "Unity Ads cannot show ads: webapp not initialized"

Hi everybody!

Unity Ads shows a black screen on Android (not Unity for Android, an Android game), the error shown is this:

I/UnityAds(17755): com.unity3d.ads.android.UnityAds.canShow() (line:242) :: Unity Ads cannot show ads: webapp not initialized

I think it has something to do with the “xml layout”, I have my own “res/layout” files so I copied the Unity Layout there, but it seems not to read them.

What I have to do?

Thanks.

Just to make sure, you have called UnityAds.init(), right?

Yes! I’m attaching the code right here :slight_smile:

2338627–158095–MoaiUnityAds.zip (1.25 KB)

Ok, so I didn’t remember to uncomment the code so the init call wasn’t done. I did it because a bigger problem: I show the Unity Ads and the screen shown is complete BLACK and you cannot close it. This is the output:

10-14 12:45:26.892: I/UnityAds(28056): com.unity3d.ads.android.UnityAds.show() (line:186) :: Launching ad from “Rewarded video ad placement”, options: {“id”:“rewardedVideoZone”,“name”:“Rewarded video ad placement”,“enabled”:true,“default”:true,“incentivised”:true,“defaultRewardItem”:{“name”:“Default reward item”,“picture”:“http://cdn.applifier.com/unityads/unityicon_62.png”,“key”:“default”},“rewardItems”:[{“name”:“Default reward item”,“picture”:“http://cdn.applifier.com/unityads/unityicon_62.png”,“key”:“default”}],“allowSkipVideoInSeconds”:-1,“disableBackButtonForSeconds”:30,“noOfferScreen”:true,“muteVideoSounds”:false,“openAnimated”:false,“useDeviceOrientationForVideo”:false,“allowClientOverrides”:[“noOfferScreen”,“openAnimated”,“muteVideoSounds”,“useDeviceOrientationForVideo”],“deleted”:false,“allowVideoSkipInSeconds”:-1}
10-14 12:45:26.964: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsFullscreenActivity.onCreate() (line:133) :: ENTERED METHOD
10-14 12:45:26.965: D/UnityAds(28056): com.unity3d.ads.android.UnityAds.changeActivity() (line:116) :: changeActivity: com.unity3d.ads.android.view.UnityAdsFullscreenActivity
10-14 12:45:26.966: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsMainView.a() (line:163) :: ENTERED METHOD
10-14 12:45:26.987: D/GAv4(28056): Hit delivery requested: ht=1444819526885, _s=56, _v=ma7.5.71, a=890445509, adid=240068e6-a872-4ce5-9d10-fd83616dd302, aid=com.erepubliklabs.cland, an=Cannon Land, ate=1, av=1.58, cd=Home, cid=5f941d4a-d687-4ab2-b3b2-b01f9d03cf27, ea=FreeCoins, ec=Button_Clicked, el=Coins, sr=1200x1824, t=event, tid=UA-2001550-23, ul=es-es, v=1
10-14 12:45:27.057: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsFullscreenActivity.onCreate() (line:147) :: Setting up WebView with view:none and data:{“action”:“open”,“zone”:“rewardedVideoZone”,“itemKey”:“default”}
10-14 12:45:27.057: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:68) :: Send change view to WebApp: javascript:unityads.setView(“none”, {“action”:“open”,“zone”:“rewardedVideoZone”,“itemKey”:“default”});
10-14 12:45:27.057: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:79) :: dataHasApiActionKey=true
10-14 12:45:27.058: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:80) :: actionEqualsWebViewApiOpen=true
10-14 12:45:27.060: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:81) :: isDebuggable=true
10-14 12:45:27.060: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:82) :: runWebViewTests=false
10-14 12:45:27.061: D/UnityAds(28056): com.unity3d.ads.android.webapp.UnityAdsWebView.setWebViewCurrentView() (line:83) :: testJavaScriptContents=null
10-14 12:45:27.072: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsFullscreenActivity.a() (line:556) :: Running threaded
10-14 12:45:27.073: I/MoaiLog(28056): MoaiUnityAds: onShow
10-14 12:45:27.081: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsFullscreenActivity.onStart() (line:195) :: ENTERED METHOD
10-14 12:45:27.081: D/UnityAds(28056): com.unity3d.ads.android.view.UnityAdsFullscreenActivity.onResume() (line:208) :: ENTERED METHOD
10-14 12:45:27.160: D/UnityAds(28056): com.unity3d.ads.android.view.b.run() (line:571) :: ENTERED METHOD
10-14 12:45:27.160: D/UnityAds(28056): com.unity3d.ads.android.view.b.run() (line:573) :: Selected campaign found

Some times I get this ERROR Output:

10-14 13:06:25.935: W/System.err(30448): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/unity3d/ads/android/R$layout;
10-14 13:06:25.935: W/System.err(30448): at com.unity3d.ads.android.video.UnityAdsVideoPlayView.e(UnityAdsVideoPlayView.java:225)
10-14 13:06:25.935: W/System.err(30448): at com.unity3d.ads.android.video.UnityAdsVideoPlayView.(UnityAdsVideoPlayView.java:62)
10-14 13:06:25.936: W/System.err(30448): at com.unity3d.ads.android.view.UnityAdsMainView.setViewState(UnityAdsMainView.java:76)
10-14 13:06:25.936: W/System.err(30448): at com.unity3d.ads.android.view.b.run(UnityAdsFullscreenActivity.java:593)
10-14 13:06:25.936: W/System.err(30448): at android.os.Handler.handleCallback(Handler.java:739)
10-14 13:06:25.936: W/System.err(30448): at android.os.Handler.dispatchMessage(Handler.java:95)
10-14 13:06:25.936: W/System.err(30448): at android.os.Looper.loop(Looper.java:135)
10-14 13:06:25.937: W/System.err(30448): at android.app.ActivityThread.main(ActivityThread.java:5254)
10-14 13:06:25.937: W/System.err(30448): at java.lang.reflect.Method.invoke(Native Method)
10-14 13:06:25.937: W/System.err(30448): at java.lang.reflect.Method.invoke(Method.java:372)
10-14 13:06:25.937: W/System.err(30448): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-14 13:06:25.937: W/System.err(30448): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-14 13:06:25.937: W/System.err(30448): Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.unity3d.ads.android.R$layout” on path: DexPathList[[zip file “/data/app/com.erepubliklabs.cland-1/base.apk”],nativeLibraryDirectories=[/data/app/com.erepubliklabs.cland-1/lib/arm, /vendor/lib, /system/lib]]
10-14 13:06:25.937: W/System.err(30448): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-14 13:06:25.937: W/System.err(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
10-14 13:06:25.937: W/System.err(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
10-14 13:06:25.937: W/System.err(30448): … 12 more
10-14 13:06:25.937: W/System.err(30448): Suppressed: java.lang.ClassNotFoundException: com.unity3d.ads.android.R$layout
10-14 13:06:25.938: W/System.err(30448): at java.lang.Class.classForName(Native Method)
10-14 13:06:25.938: W/System.err(30448): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
10-14 13:06:25.938: W/System.err(30448): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
10-14 13:06:25.938: W/System.err(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
10-14 13:06:25.938: W/System.err(30448): … 13 more
10-14 13:06:25.938: W/System.err(30448): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
10-14 13:06:25.939: W/FlurryAgent(30448): Error logged: uncaught
10-14 13:06:25.939: W/FlurryAgent(30448): Trying to end session
10-14 13:06:25.940: W/FlurryAgent(30448): Ending session
10-14 13:06:25.942: E/AndroidRuntime(30448): FATAL EXCEPTION: main
10-14 13:06:25.942: E/AndroidRuntime(30448): Process: com.erepubliklabs.cland, PID: 30448
10-14 13:06:25.942: E/AndroidRuntime(30448): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/unity3d/ads/android/R$layout;
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.unity3d.ads.android.video.UnityAdsVideoPlayView.e(UnityAdsVideoPlayView.java:225)
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.unity3d.ads.android.video.UnityAdsVideoPlayView.(UnityAdsVideoPlayView.java:62)
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.unity3d.ads.android.view.UnityAdsMainView.setViewState(UnityAdsMainView.java:76)
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.unity3d.ads.android.view.b.run(UnityAdsFullscreenActivity.java:593)
10-14 13:06:25.942: E/AndroidRuntime(30448): at android.os.Handler.handleCallback(Handler.java:739)
10-14 13:06:25.942: E/AndroidRuntime(30448): at android.os.Handler.dispatchMessage(Handler.java:95)
10-14 13:06:25.942: E/AndroidRuntime(30448): at android.os.Looper.loop(Looper.java:135)
10-14 13:06:25.942: E/AndroidRuntime(30448): at android.app.ActivityThread.main(ActivityThread.java:5254)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.reflect.Method.invoke(Native Method)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.reflect.Method.invoke(Method.java:372)
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-14 13:06:25.942: E/AndroidRuntime(30448): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-14 13:06:25.942: E/AndroidRuntime(30448): Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.unity3d.ads.android.R$layout” on path: DexPathList[[zip file “/data/app/com.erepubliklabs.cland-1/base.apk”],nativeLibraryDirectories=[/data/app/com.erepubliklabs.cland-1/lib/arm, /vendor/lib, /system/lib]]
10-14 13:06:25.942: E/AndroidRuntime(30448): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
10-14 13:06:25.942: E/AndroidRuntime(30448): … 12 more
10-14 13:06:25.942: E/AndroidRuntime(30448): Suppressed: java.lang.ClassNotFoundException: com.unity3d.ads.android.R$layout
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.Class.classForName(Native Method)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
10-14 13:06:25.942: E/AndroidRuntime(30448): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
10-14 13:06:25.942: E/AndroidRuntime(30448): … 13 more
10-14 13:06:25.942: E/AndroidRuntime(30448): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Hello,

This issue has been addressed in the latest SDK update. Please follow these instructions to update:

  1. Download the unity-ads.aar file
  2. Remove all previously added Unity Ads integration related files/references from your project
  3. On Android Studio, Click File → New → New Module
  4. Select Import .JAR/.AAR Package, click Next
  5. Locate unity-ads.aar, module name should change to unity-ads, click Finish.
  6. Now, Right Click the default module of your project, select Open Module Settings
  7. Ensure that your default module is selected, click the Dependencies tab
  8. Click the plus sign in the bottom of the screen, choose Module Dependency
  9. Choose unity-ads from the popup that opens

This should fix the R$Layout issue.

1 Like

having the same error using latest unity-ads.aar

I/UnityAds(17755): com.unity3d.ads.android.UnityAds.canShow() (line:242) :: Unity Ads cannot show ads: webapp not initialized

here is my complete log

2348237–158950–unityads.txt (22.5 KB)

mmh ok, following the code, it seems that the webapp state is not set as initialized until I set a Listener…

in UnityAdsMainView.java:138

if (!UnityAdsProperties.isAdsReadySent() && UnityAds.getListener() != null) {
UnityAdsDeviceLog.debug(“Unity Ads ready.”);
UnityAdsProperties.setAdsReadySent(true);
UnityAds.getListener().onFetchCompleted();
}

THANK YOU!

i found issue.
test ads does not show.

Error :- Unity Ads show failed: Webapp timeout, shutting down Unity Ads
final UnityAdsListener myAdsListener = new UnityAdsListener();
UnityAds.initialize(this, MyApplication.getApplicationInstance().getupguintru(), myAdsListener, true);

private class UnityAdsListener implements IUnityAdsListener {

public void onUnityAdsReady(String placementId) {

}

@
public void onUnityAdsStart(String placementId) {
}

@
public void onUnityAdsFinish(String placementId, UnityAds.FinishState finishState) {
}

@
public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {

}
}

if (UnityAds.isReady(“video”)) {
UnityAds.show(LuckyBox.this, “video”);
}