我在RecyclerView中有一个元素列表,为了让我的生活更轻松,我使用的是androidx.recyclerview:recyclerview:1.0.0
。
我正在尝试从Facebook加载广告,如https://developers.facebook.com/docs/audience-network/android所述(他们使用的是com.android.support:recyclerview-v7:25.3.1
)。
我已经添加了支持库recyclerview-v7
和support-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
,或者这两种方式可以合作吗?
您似乎已经意识到了,但以防万一......这种情况正在发生,因为Facebook SDK依赖于androidx
的pre-RecyclerView
版本,并且您在应用中使用了androidx
版本。
您可以降级自己的依赖关系,以便您的应用和Facebook SDK都使用RecyclerView
包中的android.support.v7.widget
版本。
或者,您可以使用the Jetifier tool动态重写Facebook SDK的依赖关系,以便它使用RecyclerView
包中的androidx.recyclerview.widget
版本。
执行第二个选项的最简单方法是按照Migrating to AndroidX文档中列出的步骤操作:
[...]在
true
文件中为gradle.properties
设置以下两个标志:android.useAndroidX=true android.enableJetifier=true