如何在Facebook Audience Network SDK中使用androidx.recyclerview?

时间:2019-03-25 15:50:53

标签: android android-recyclerview facebook-ads-api

我在RecyclerView中有一个元素列表,为了简化生活,我正在使用androidx.recyclerview:recyclerview:1.0.0

我正尝试按照此处https://developers.facebook.com/docs/audience-network/android所述从Facebook加载广告(它们正在使用com.android.support:recyclerview-v7:25.3.1)。

我已经添加了支持库recyclerview-v7support-v4。但是FBAudienceNetwork仍然给我这个错误:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.RecyclerView"

...

Dependency not found: android.support.v4.content.LocalBroadcastManager
Dependency not found: android.support.v7.widget.RecyclerView

...

 java.lang.RuntimeException: Facebook Audience Network SDK doesn't have all required classes. Please, check LogCat output for tag FBAudienceNetwork. See more: https://developers.facebook.com/docs/audience-network/android/ . You can change Integration Error mode by setting AdSettings.setIntegrationErrorMode()

是否有一种方法可以“强制” FBAudienceNetwork使用我的androidx.recyclerview而不是com.android.support:recyclerview-v7,或者这两种方法可以一起工作?

1 个答案:

答案 0 :(得分:1)

您似乎已经知道了,但以防万一...之所以发生这种情况,是因为Facebook SDK依赖于androidx的{​​{1}}之前的版本,并且您正在使用{您应用中的{1}}版本。

您可以降级您自己的依赖关系,以便您的应用程序和Facebook SDK都使用RecyclerView程序包中的androidx版本。

或者,您可以使用the Jetifier tool动态重写Facebook SDK的依赖关系,以便它使用RecyclerView程序包中的android.support.v7.widget版本。

执行第二个选项的最简单方法是遵循Migrating to AndroidX文档中列出的步骤:

  

[...]在RecyclerView文件中将以下两个标志设置为androidx.recyclerview.widget

true