Search Unity

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

Discussion in 'Unity Ads & User Acquisition' started by RurouniGPL, Oct 14, 2015.

Thread Status:
Not open for further replies.
  1. RurouniGPL

    RurouniGPL

    Joined:
    Sep 23, 2015
    Posts:
    5
    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.
     
  2. rasmus-unity

    rasmus-unity

    Moderator

    Joined:
    Aug 15, 2014
    Posts:
    1,312
    Just to make sure, you have called UnityAds.init(), right?
     
  3. RurouniGPL

    RurouniGPL

    Joined:
    Sep 23, 2015
    Posts:
    5
    Yes! I'm attaching the code right here :)
     

    Attached Files:

  4. RurouniGPL

    RurouniGPL

    Joined:
    Sep 23, 2015
    Posts:
    5
    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
     
  5. RurouniGPL

    RurouniGPL

    Joined:
    Sep 23, 2015
    Posts:
    5
    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.<init>(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.<init>(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
     
  6. FritzH

    FritzH

    Developer Relations

    Joined:
    Aug 18, 2015
    Posts:
    45
    Hello,

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

    1. Download the [unity-ads.aar](https://github.com/Applifier/unity-ads-sdk/raw/master/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.
     
    DarKSaCoR likes this.
  7. volcanomobile

    volcanomobile

    Joined:
    Oct 21, 2015
    Posts:
    2
    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
     

    Attached Files:

  8. volcanomobile

    volcanomobile

    Joined:
    Oct 21, 2015
    Posts:
    2
    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();
    }
     
  9. DarKSaCoR

    DarKSaCoR

    Joined:
    Jan 13, 2017
    Posts:
    2
    THANK YOU!
     
  10. kanzariyahitesh405

    kanzariyahitesh405

    Joined:
    Sep 18, 2019
    Posts:
    5
    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) {

    }

    @override
    public void onUnityAdsStart(String placementId) {
    }

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

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

    }
    }

    if (UnityAds.isReady("video")) {
    UnityAds.show(LuckyBox.this, "video");
    }
     
Thread Status:
Not open for further replies.