【问题标题】:Facebook SDK Android, java.lang.RuntimeException: Unable to get provider com.facebook.internal.FacebookInitProviderFacebook SDK Android,java.lang.RuntimeException:无法获取提供程序 com.facebook.internal.FacebookInitProvider
【发布时间】:2017-03-01 08:06:13
【问题描述】:

之前有没有人在使用 Facebook SDK for Android 时遇到过这个错误?

java.lang.RuntimeException: 无法获取提供者 com.facebook.internal.FacebookInitProvider: java.lang.ClassNotFoundException:找不到类 路径上的“com.facebook.internal.FacebookInitProvider”:DexPathList [[zip 文件“/data/app/com.hellogold.app.dev-2/base.apk”]

【问题讨论】:

  • 这是您第一次设置吗?还是在更改 SDK 后出现此错误?
  • 这是后期设置,在此之前我的SDK没有问题。
  • 我的坏@MohammedAtif,这是我的第一次安装。
  • 您是否在清单文件中添加了提供商详细信息?
  • 你的意思是元数据吗?像这样? 如果是,我添加了这个。如果没有,你现在需要让我补充什么,因为他们的说明没有包含任何提供者详细信息部分

标签: android facebook


【解决方案1】:

我遇到了同样的问题,因为我在 App.onCreate 中调用 MultiDex.install,移动到 App.attachBaseContext() 解决了这个问题。因为在 App.onCreate 之前提供安装开始。

【讨论】:

    【解决方案2】:

    以下代码为我解决了我的 multidex 问题。我从工程师博客文章的一个小组中得到它们,以为我不记得原始链接了,如果有人能找到它,请在 cmets 中链接它,我将编辑我的答案以反映我从他的博客文章中得到了我的解决方案.

    android.applicationVariants.all { variant ->
        task "fix${variant.name.capitalize()}MainDexClassList" << {
            logger.info "Fixing main dex keep file for $variant.name"
            File keepFile = new File("$buildDir/intermediates/multi-dex/$variant.buildType.name/maindexlist.txt")
            keepFile.withWriterAppend { w ->
                // Get a reader for the input file
                w.append('\n')
                new File("${projectDir}/multidex.keep").withReader { r ->
                    // And write data from the input into the output
                    w << r << '\n'
                }
                logger.info "Updated main dex keep file for ${keepFile.getAbsolutePath()}\n$keepFile.text"
            }
        }
    }
    tasks.whenTaskAdded { task ->
        android.applicationVariants.all { variant ->
            if (task.name == "create${variant.name.capitalize()}MainDexClassList") {
                task.finalizedBy "fix${variant.name.capitalize()}MainDexClassList"
            }
        }
    }
    

    所以上面的工作对

    compileSdkVersion 25 minSdkVersion 16 targetSdkVersion 25 multiDexEnabled true

    我在应用程序的 gradle 中声明了它,而不是在主 gradle 中。

    【讨论】:

    • 你能澄清一下你把第一块代码放在哪里吗?
    • @EthanFischer 声明存储库并应用插件后
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2019-01-02
    • 2019-03-18
    • 2017-01-05
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多