Xamarin AdMob SDK 118.1.1 更新后 ShouldDelayBannerRenderingListenerImplementor 错误
ShouldDelayBannerRenderingListenerImplementor Error after Xamarin AdMob SDK 118.1.1 update
经过长时间等待 Xamarin 上的 Admob SDK 更新以实现自适应横幅广告和新的原生广告,升级到新的 Nuget 包 Sdk 118.1.1preview 后,Visual Studio 打开一个 .Java 文件并提到以下错误:
错误:ShouldDelayBannerRenderingListenerImplementor 不是抽象的,并且没有覆盖 ShouldDelayBannerRenderingListener 中的抽象方法 zzb(Runnable)。
利用新的 xamarin admob sdk(118.1.1 预览版),克服 JAVA 错误:
错误:ShouldDelayBannerRenderingListenerImplementor 不是抽象的,不会重写 ShouldDelayBannerRenderingListener 中的抽象方法 zzb(Runnable)。
只需将以下代码放在弹出的 java 文件中并构建解决方案:
@Override
public boolean zzb(Runnable runnable) {
return false;
}
或者让此 C# 代码 (FileWatcher) 保持 运行 :
static void Main(string[] args)
{
var Javacode = File.ReadAllText(@"MyJavaFile.java");
while (true)
{
try
{
var JavaFilePah = @"C:\Project\Android\apps\AppName\obj\Debug0\android\src\mono\com\google\android\gms\ads\formats\ShouldDelayBannerRenderingListenerImplementor.java";
DateTime LastFileChang = File.GetLastWriteTime(JavaFilePah);
if (LastFileChang != LastFileChangesave)
{
if (File.Exists(JavaFilePah) && File.ReadAllText(JavaFilePah).Contains("zzb") == false)
{
File.WriteAllText(JavaFilePah, Javacode);
Console.WriteLine("ok");
}
LastFileChangesave = LastFileChang;
}
Thread.Sleep(10);
}
catch (Exception e)
{
}
}
}
使用您的 android 应用程序的路径更改 JavaFilePah。
MyJavaFile 内容是:
package mono.com.google.android.gms.ads.formats;
public class ShouldDelayBannerRenderingListenerImplementor
extends java.lang.Object
implements
mono.android.IGCUserPeer,
com.google.android.gms.ads.formats.ShouldDelayBannerRenderingListener
{
/** @hide */
public static final String __md_methods;
static {
__md_methods =
"";
mono.android.Runtime.register ("Android.Gms.Ads.Formats.IShouldDelayBannerRenderingListenerImplementor, Xamarin.GooglePlayServices.Ads.Lite", ShouldDelayBannerRenderingListenerImplementor.class, __md_methods);
}
public ShouldDelayBannerRenderingListenerImplementor ()
{
super ();
if (getClass () == ShouldDelayBannerRenderingListenerImplementor.class)
mono.android.TypeManager.Activate ("Android.Gms.Ads.Formats.IShouldDelayBannerRenderingListenerImplementor, Xamarin.GooglePlayServices.Ads.Lite", "", this, new java.lang.Object[] { });
}
private java.util.ArrayList refList;
public void monodroidAddReference (java.lang.Object obj)
{
if (refList == null)
refList = new java.util.ArrayList ();
refList.add (obj);
}
public void monodroidClearReferences ()
{
if (refList != null)
refList.clear ();
}
@Override
public boolean zzb(Runnable runnable) {
return false;
}
}
经过长时间等待 Xamarin 上的 Admob SDK 更新以实现自适应横幅广告和新的原生广告,升级到新的 Nuget 包 Sdk 118.1.1preview 后,Visual Studio 打开一个 .Java 文件并提到以下错误:
错误:ShouldDelayBannerRenderingListenerImplementor 不是抽象的,并且没有覆盖 ShouldDelayBannerRenderingListener 中的抽象方法 zzb(Runnable)。
利用新的 xamarin admob sdk(118.1.1 预览版),克服 JAVA 错误: 错误:ShouldDelayBannerRenderingListenerImplementor 不是抽象的,不会重写 ShouldDelayBannerRenderingListener 中的抽象方法 zzb(Runnable)。
只需将以下代码放在弹出的 java 文件中并构建解决方案:
@Override
public boolean zzb(Runnable runnable) {
return false;
}
或者让此 C# 代码 (FileWatcher) 保持 运行 :
static void Main(string[] args)
{
var Javacode = File.ReadAllText(@"MyJavaFile.java");
while (true)
{
try
{
var JavaFilePah = @"C:\Project\Android\apps\AppName\obj\Debug0\android\src\mono\com\google\android\gms\ads\formats\ShouldDelayBannerRenderingListenerImplementor.java";
DateTime LastFileChang = File.GetLastWriteTime(JavaFilePah);
if (LastFileChang != LastFileChangesave)
{
if (File.Exists(JavaFilePah) && File.ReadAllText(JavaFilePah).Contains("zzb") == false)
{
File.WriteAllText(JavaFilePah, Javacode);
Console.WriteLine("ok");
}
LastFileChangesave = LastFileChang;
}
Thread.Sleep(10);
}
catch (Exception e)
{
}
}
}
使用您的 android 应用程序的路径更改 JavaFilePah。 MyJavaFile 内容是:
package mono.com.google.android.gms.ads.formats;
public class ShouldDelayBannerRenderingListenerImplementor
extends java.lang.Object
implements
mono.android.IGCUserPeer,
com.google.android.gms.ads.formats.ShouldDelayBannerRenderingListener
{
/** @hide */
public static final String __md_methods;
static {
__md_methods =
"";
mono.android.Runtime.register ("Android.Gms.Ads.Formats.IShouldDelayBannerRenderingListenerImplementor, Xamarin.GooglePlayServices.Ads.Lite", ShouldDelayBannerRenderingListenerImplementor.class, __md_methods);
}
public ShouldDelayBannerRenderingListenerImplementor ()
{
super ();
if (getClass () == ShouldDelayBannerRenderingListenerImplementor.class)
mono.android.TypeManager.Activate ("Android.Gms.Ads.Formats.IShouldDelayBannerRenderingListenerImplementor, Xamarin.GooglePlayServices.Ads.Lite", "", this, new java.lang.Object[] { });
}
private java.util.ArrayList refList;
public void monodroidAddReference (java.lang.Object obj)
{
if (refList == null)
refList = new java.util.ArrayList ();
refList.add (obj);
}
public void monodroidClearReferences ()
{
if (refList != null)
refList.clear ();
}
@Override
public boolean zzb(Runnable runnable) {
return false;
}
}