Facebook Audience SDK 导致崩溃
Facebook Audience SDK Causing CRASH
我最近将我的应用程序的 facebook 受众 sdk 更新到最新版本,并且总是因为 onLoggingImpression 而崩溃,这是 AdListener 中的一个新方法,下面是我得到的堆栈跟踪。我在这里使用自定义 admob facebook 适配器。
*
java.lang.AbstractMethodError: abstract method "void com.facebook.ads.AdListener.onLoggingImpression(com.facebook.ads.Ad)"
at com.facebook.ads.InterstitialAd.b(Unknown Source)
at com.facebook.ads.internal.DisplayAdController.onInterstitialLoggingImpression(Unknown Source)
at com.facebook.ads.internal.adapters.s.onReceive(Unknown Source)
at android.support.v4.b.g.a(LocalBroadcastManager.java:297)
at android.support.v4.b.g.a(LocalBroadcastManager.java:46)
at android.support.v4.b.g.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
*
很可能您需要为 Facebook 受众网络更新 Admob SDK 或 admob 适配器。
这个问题发生在我几个月没有碰它重建我的项目之后,因此在 gradle 同步后下载了最新版本的 FAN SDK。由于我正在使用 AOL 提供的 One 来调解 FAN,我已将其用于 FAN 的 SDK 和适配器更新为最新版本,应用程序停止崩溃 - 错误不再发生。因此,AdMob 的情况可能相同 - 需要添加更新的 SDK 或适配器版本,以便 Facebook 广告正常运行。
我在过去几天更新到 Facebook Audience Network (FAN) SDK 4.25.0 时遇到了同样的问题。插页式广告效果很好,但横幅会导致崩溃。
原因是 Facebook Audience Network 的 com.facebook.ads.AdListener class 添加了一个额外的回调函数 -- onLoggingImpression. AudienceNetwork.jar 假定无论处理广告的代码是什么——在这种情况下是 MoPub 的自定义事件适配器——将处理 ALL它定义的回调函数。
因此在这种情况下,只需更新 Facebook 自定义事件适配器即可。
MoPub 在 Github 上提供了代码:Mopub Android SDK。你要的文件是FacebookBanner.java.
如果您将项目直接编译为 Android 项目,您可以直接从 MoPub 下载中获取 FacebookBanner.java 文件,然后 用它替换现有的。
但是,如果您像许多人一样使用 Unity,您将需要做额外的工作才能将其转换为 .jar 文件。这有点复杂,所以我上传了一个 bitbucket project here.
要使用 bitbucket 项目,请单击 link 并下载它,然后按照 README 说明进行操作,这些说明包含在下载中以及 bitbucket 的概述页面上。 for MacOS构建说明如下:
- 打开命令行(终端)并导航到项目文件夹。
- 运行“go”脚本,输入“./go”
- 将 FacebookBanner.jar 复制到 Assets/Plugins/Android 文件夹中的 Unity 项目中。
- 重建您的 Unity 项目。
如果你想以“正确”的方式做事,你应该下载 FacebookBanner.java 并将其放在下载的项目中的文件夹com/mopub/mobileads/。我已经在项目中有了它,但你可以这样更新它。
如果您使用的不是 MacOS,您可以直接获取 FacebookBanner.jar 文件,该文件也包含在 bitbucket 项目中。
如果您不想做这项工作而只想下载这两个文件,请在此处下载:
显然那些会过时,但现在您已经有了完整的解决方案。 :)
祝你好运!
感谢@Adomas,问题应该出在 Facebook 适配器上。
这是最新的集成指南。
https://developers.google.com/admob/android/mediation/facebook
现在我们不需要手动下载适配器了。
compile 'com.facebook.android:audience-network-sdk:4.25.0'
compile 'com.google.ads.mediation:facebook:4.25.0.0'
但我使用的是 4.23.0,因为 4.25.0 在我构建项目后显示了一些警告。
我最近将我的应用程序的 facebook 受众 sdk 更新到最新版本,并且总是因为 onLoggingImpression 而崩溃,这是 AdListener 中的一个新方法,下面是我得到的堆栈跟踪。我在这里使用自定义 admob facebook 适配器。
*
java.lang.AbstractMethodError: abstract method "void com.facebook.ads.AdListener.onLoggingImpression(com.facebook.ads.Ad)"
at com.facebook.ads.InterstitialAd.b(Unknown Source)
at com.facebook.ads.internal.DisplayAdController.onInterstitialLoggingImpression(Unknown Source)
at com.facebook.ads.internal.adapters.s.onReceive(Unknown Source)
at android.support.v4.b.g.a(LocalBroadcastManager.java:297)
at android.support.v4.b.g.a(LocalBroadcastManager.java:46)
at android.support.v4.b.g.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
*
很可能您需要为 Facebook 受众网络更新 Admob SDK 或 admob 适配器。
这个问题发生在我几个月没有碰它重建我的项目之后,因此在 gradle 同步后下载了最新版本的 FAN SDK。由于我正在使用 AOL 提供的 One 来调解 FAN,我已将其用于 FAN 的 SDK 和适配器更新为最新版本,应用程序停止崩溃 - 错误不再发生。因此,AdMob 的情况可能相同 - 需要添加更新的 SDK 或适配器版本,以便 Facebook 广告正常运行。
我在过去几天更新到 Facebook Audience Network (FAN) SDK 4.25.0 时遇到了同样的问题。插页式广告效果很好,但横幅会导致崩溃。
原因是 Facebook Audience Network 的 com.facebook.ads.AdListener class 添加了一个额外的回调函数 -- onLoggingImpression. AudienceNetwork.jar 假定无论处理广告的代码是什么——在这种情况下是 MoPub 的自定义事件适配器——将处理 ALL它定义的回调函数。
因此在这种情况下,只需更新 Facebook 自定义事件适配器即可。
MoPub 在 Github 上提供了代码:Mopub Android SDK。你要的文件是FacebookBanner.java.
如果您将项目直接编译为 Android 项目,您可以直接从 MoPub 下载中获取 FacebookBanner.java 文件,然后 用它替换现有的。
但是,如果您像许多人一样使用 Unity,您将需要做额外的工作才能将其转换为 .jar 文件。这有点复杂,所以我上传了一个 bitbucket project here.
要使用 bitbucket 项目,请单击 link 并下载它,然后按照 README 说明进行操作,这些说明包含在下载中以及 bitbucket 的概述页面上。 for MacOS构建说明如下:
- 打开命令行(终端)并导航到项目文件夹。
- 运行“go”脚本,输入“./go”
- 将 FacebookBanner.jar 复制到 Assets/Plugins/Android 文件夹中的 Unity 项目中。
- 重建您的 Unity 项目。
如果你想以“正确”的方式做事,你应该下载 FacebookBanner.java 并将其放在下载的项目中的文件夹com/mopub/mobileads/。我已经在项目中有了它,但你可以这样更新它。
如果您使用的不是 MacOS,您可以直接获取 FacebookBanner.jar 文件,该文件也包含在 bitbucket 项目中。
如果您不想做这项工作而只想下载这两个文件,请在此处下载:
显然那些会过时,但现在您已经有了完整的解决方案。 :)
祝你好运!
感谢@Adomas,问题应该出在 Facebook 适配器上。
这是最新的集成指南。 https://developers.google.com/admob/android/mediation/facebook
现在我们不需要手动下载适配器了。
compile 'com.facebook.android:audience-network-sdk:4.25.0'
compile 'com.google.ads.mediation:facebook:4.25.0.0'
但我使用的是 4.23.0,因为 4.25.0 在我构建项目后显示了一些警告。