尝试显示受众群体网络奖励视频时崩溃

时间:2017-08-06 10:22:44

标签: android facebook facebook-android-sdk facebook-unity-sdk facebook-audience-network

在我们的游戏中,我们使用Facebook SDK for Unity(v7.5.0),以及来自IronSource的奖励视频中介。

适用于Android的底层Facebook SDK是v4.11.0。

当试图展示奖励视频时,我们的游戏会因此例外而崩溃:

E/JavaBinder( 1172): !!! FAILED BINDER TRANSACTION !!!  (parcel size = 521496)
W/ActivityManager( 1172): Exception when starting activity com.moonactive.coinmaster/com.facebook.ads.AudienceNetworkActivity
W/ActivityManager( 1172): android.os.TransactionTooLargeException: data parcel size 521496 bytes
W/ActivityManager( 1172):   at android.os.BinderProxy.transactNative(Native Method)
W/ActivityManager( 1172):   at android.os.BinderProxy.transact(Binder.java:503)
W/ActivityManager( 1172):   at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:1088)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:2540)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:2661)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:3493)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:2613)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStackSupervisor.resumeTopActivitiesLocked(ActivityStackSupervisor.java:5060)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1687)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1552)
W/ActivityManager( 1172):   at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:1474)
W/ActivityManager( 1172):   at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:10204)
W/ActivityManager( 1172):   at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:547)
W/ActivityManager( 1172):   at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:4014)
W/ActivityManager( 1172):   at android.os.Binder.execTransact(Binder.java:453)
D/ActivityManager( 1172): isAutoRunBlockedApp:: com.moonactive.coinmaster, Auto Run ON
W/ActivityManager( 1172): Force removing ActivityRecord{6a0b73e u0 com.moonactive.coinmaster/com.moon.coinmaster.android.GameActivity t756}: app died, no saved state

这是一个已经解决的已知错误吗?我找不到任何类似的错误。

1 个答案:

答案 0 :(得分:2)

Android SDK目标26+改变了活动传递数据的方式 - 基本上它们限制了可以传递的数据量。

最终Facebook将发布更新的 AudienceNetwork.aar 文件以解决此问题。

但是,解决方法如下:

Unity会自动构建您的Android项目,定位最新且最好的SDK。目前很可能是SDK 26。 Unity Editor中没有选项可以覆盖此设置,但是有一个选项可以覆盖Minimum SDK Version。

  1. 打开Unity项目
  2. 转到文件 - >构建设置。确保选中“Android”。
  3. 点击播放器设置,然后点击右侧,点击展开其他设置
  4. 记下“最低API级别”。会有一些文字和数字,例如 Android 4.1'Jelly Bean'(API级别16)。在我的示例中,您想要的数字是 16
  5. 保存并关闭您的项目。
  6. 导航到Unity项目的根目录,然后导航到资产/插件/ Android 文件夹。
  7. 在那里编辑 AndroidManifest.xml 文件。

    第一行应该开始:<?xml ...

    第二行应该是<manifest xmlns:android...

    将THIS行插入第3行:

    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />

    将“ 16 ”替换为您想要的最低Sdk版本,从上面的步骤4开始。将 targetSdkVersion 设置为 25 ,或24,或任何您想要的数字 - 它必须低于26。

  8. 从Unity项目根目录中删除 Temp 文件夹。
  9. 打开Unity并重建您的项目。
  10. 如果您在Unity上,只需将 targetSdkVersion 更新为25或更低 - 更新您的 AndroidManifest.xml 主项目文件夹。截至今天上午,Facebook的最新版仍然显示4.25.0,如果你定位Android SDK 26仍然无效。