Facebook App Event sdk 4.38.0 在 ViewHierarchy.setAppearanceOfView 中抛出 NPE
Posted
技术标签:
【中文标题】Facebook App Event sdk 4.38.0 在 ViewHierarchy.setAppearanceOfView 中抛出 NPE【英文标题】:Facebook App Event sdk 4.38.0 throws NPE in ViewHierarchy.setAppearanceOfView 【发布时间】:2018-11-14 10:49:23 【问题描述】:我在使用 facebook sdk 的某个应用程序中遇到问题。将 sdk 从 4.27.0 升级到 4.38.0 后,fabric 开始记录此致命异常。我不知道它何时或如何发生,因为我自己无法重现它。也许你们中的一些人在升级 facebook SDK 后遇到了这个问题。
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
at com.facebook.appevents.codeless.internal.ViewHierarchy.setAppearanceOfView(ViewHierarchy.java:182)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:197)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.getClickableElementsOfView(ButtonIndexer.java:206)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.attachListeners(ButtonIndexer.java:166)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.process(ButtonIndexer.java:161)
at com.facebook.marketing.internal.ButtonIndexer$ViewProcessor.run(ButtonIndexer.java:145)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6221)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
【问题讨论】:
我在 Android 5.1 和 4.4.4 版本以及多个深奥的设备(如LAVA - Grand 2
)上也看到了它。
向 facebook 提交了错误报告,请随时通过“订阅”投票:developers.facebook.com/support/bugs/1955482454532167
已经做到了。感谢您报告它,我没有在 facebook 网站上发布它,因为 3.38.0 不是最新版本的 sdk :)
要重现这种情况,您只需创建 ImageView 并设置空 BitmapDrawable:imageView.setImageDrawable(new BitmapDrawable()); imageView.setClickable(true);
然后 Facebook SDK 在大约 2% 的情况下(当前)基于设备 ID 将启用按钮索引功能,它会失败,因为BitmapDrawable.getBitmap 可以为空。
不幸的是,我无法以您描述的方式重现此错误:(
【参考方案1】:
facebook android SDK 4.40.0 固定版本最近发布:
https://developers.facebook.com/docs/android/change-log-4x/ https://github.com/facebook/facebook-android-sdk/releases/tag/sdk-version-4.40.0【讨论】:
以上是关于Facebook App Event sdk 4.38.0 在 ViewHierarchy.setAppearanceOfView 中抛出 NPE的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何在带有 Facebook sdk 4 的 Android App 中合并 Like 按钮?
Facebook Android SDK:“无法解析符号 EVENT_NAME_SUBSCRIBE”
Facebook PHP SDK 4.0 使用 Lumen 登录
Facebook iOS SDK 4.0“App Invites”在没有 iOS 通知的情况下发送