Facebook Sdk Android错误构建

时间:2017-05-25 22:33:53

标签: facebook react-native fbsdk react-native-fbsdk

我正在尝试构建我的 react-native 项目并使用react-native fbsdk。

但是,我收到了这些错误:

/home/luiz/MYP/app/node_modules/react-native-fbsdk/android/build/intermediates/res/merged/release/values-v24/values-v24.xml:3: AAPT: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.

/home/luiz/MYP/app/node_modules/react-native-fbsdk/android/build/intermediates/res/merged/release/values-v24/values-v24.xml:4: AAPT: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.

/home/luiz/MYP/app/node_modules/react-native-fbsdk/android/build/intermediates/res/merged/release/values-v24/values-v24.xml:3: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.

/home/luiz/MYP/app/node_modules/react-native-fbsdk/android/build/intermediates/res/merged/release/values-v24/values-v24.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.


:react-native-fbsdk:processReleaseResources FAILED

我目前的操作系统是Linux Elementary 0.4.1 Loki x64。

我正在使用react-native@0.37.0,因此,react-native-fbsdk @0.4.0。

我已经尝试过了:

  • cd android && ./gradlew clean

  • 删除项目并重新npm install

  • 并尝试Android API的23和24。

7 个答案:

答案 0 :(得分:52)

显然,facebook已更新了他们的sdk yesterday,而最新的(4.23.0)sdk可能有错误或其他内容。

您可以通过以下方式更改node_modules \ react-native-fbsdk \ android \ build.gradle来解决此问题:

compile('com.facebook.android:facebook-android-sdk:4.+')

要:

compile('com.facebook.android:facebook-android-sdk:4.22.1')

我没有傻瓜,所以如果有人知道从父gradle.build强制推出该版本的更好方法,请发表评论,我会更新答案。

** 编辑 **

@Andreyco设法在不改变node_modules的情况下解决了这个问题。您可以向下滚动到他的答案或点击here

此外,正如@JuanJoseTugores所通知,pull request中的react-native-fbsdk等待批准,因此您可以检查错误的进度并在收到错误时收到通知。解决了。​​

** 另一次更新 **
Facebook关闭了针对此问题为他们开放的bug,称他们修复了sdk。所以现在可以删除所有的变通方法。

显然FB还没有解决这个问题。我们刚刚升级到RN 0.44& FB 0.6.0

答案 1 :(得分:27)

在深入研究之后,我提出了以下解决方案。

关键是要排除facebook-android-sdk所需的react-native-fbsdk并在facebook-android-sdk模块上提取所需的(工作)版本 - 最好不要修改node_modules文件夹中的任何内容。

幸运的是,gradle提供了这个。

// android/app/build.gradle

dependencies {
    compile(project(':react-native-fbsdk')){
      exclude(group: 'com.facebook.android', module: 'facebook-android-sdk')
    }
    compile "com.facebook.android:facebook-android-sdk:4.22.1"
}

答案 2 :(得分:11)

我无需修改node_modules/...下的文件即可解决此问题。我将react-native-fbsdk版本升级为0.6.0,然后将其添加到应用程序的build.gradle文件中,以便facebook-android-sdk4.22.1 {<1}}:

project(':react-native-fbsdk') {
    configurations.all {
        resolutionStrategy {
            force 'com.facebook.android:facebook-android-sdk:4.22.1'
        }
    }
}

configurations.all {
    resolutionStrategy {
        force 'com.facebook.android:facebook-android-sdk:4.22.1'
        ...
    }
}

修改:我们正在构建:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    ...
}

答案 3 :(得分:5)

我刚刚遇到这个错误。首先,RN Facebook SDK v.0.6.0仅适用于react-native >= 0.44.0,因此您必须将package.json中的依赖关系更新为react-native: ^0.44.0。然后转到Android build.gradle文件并进行此更改:compileSdkVersion 25compile "com.android.support:appcompat-v7:25.0.0"

答案 4 :(得分:5)

this为我修复了

android/build.gradle

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion '27.0.3'
            }
        }
    }
}

答案 5 :(得分:4)

对于那些正在寻找使用 RN 0.42 的人来说,现在是反应版稳定的人,你可能需要使用 Facebook SDK 4.18.0 "com.facebook.android:facebook-android-sdk:4.18.0"这是react-native-fbsdk@0.5.0发布时释放的... dependencies { compile project(':react-native-fbsdk') compile project(':react-native-vector-icons') compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" compile "com.facebook.react:react-native:+" // From node_modules compile "com.facebook.android:facebook-android-sdk:[4.18.0)" } ,否则您可能会遇到问题:https://developers.facebook.com/bugs/1712442065726889/

此外,如果你很难迫使facebook sdk成为你需要的东西,试试这个:

<强>机器人/应用/的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

project(':react-native-fbsdk') {
  configurations.all {
    resolutionStrategy {
      force 'com.facebook.android:facebook-android-sdk:4.18.0'
    }
  }
}

...

allprojects {
    repositories {
        ...
        configurations.all {
            resolutionStrategy {
              force 'com.facebook.android:facebook-android-sdk:4.18.0'
            }
        }
    }
}

<强>机器人/的build.gradle

checkout([$class: 'GitSCM', branches: [[name: '*/master']],
            extensions: [[$class: 'CloneOption', timeout: 120]], gitTool: 'Default', 
            userRemoteConfigs: [[credentialsId: key, url: repo]]
        ])

答案 6 :(得分:1)

正如你在这里看到的那样有补丁传入,

https://github.com/facebook/react-native-fbsdk/pull/339 https://github.com/facebook/react-native-fbsdk/pull/338

与此同时,如果您正在使用react-native-fbsdk v0.5,那么

yarn add react-native-fbsdk@https://github.com/tugorez/react-native-fbsdk

我已经应用了建议的更改并且它正在工作:)但请注意我不会支持这个并且不会更新它...所以你应该尽快去回到官方图书馆。