43

我正在尝试构建我的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。

4

7 回答 7

51

显然facebook昨天更新了他们的sdk ,最新的(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 人,所以如果有人知道从父 gradle.build 强制版本的更好方法,请发表评论,我会更新答案。

** 编辑**

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

此外,正如@JuanJoseTugores 通知的那样,react-native-fbsdk 中有一个拉请求正在等待批准,因此您可以检查错误的进度并在解决时收到通知。

**另一个更新**
Facebook 关闭了为他们打开的关于此问题的错误,称他们修复了 sdk。因此,现在可以删除所有解决方法。

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

于 2017-05-26T00:25:25.863 回答
27

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

关键是排除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"
}
于 2017-05-25T22:42:44.193 回答
11

我能够在不修改node_modules/.... 我将我们的react-native-fbsdk版本升级到0.6.0,然后将其添加到我们的应用程序build.gradle文件中以固定facebook-android-sdk在版本4.22.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"
    ...
}
于 2017-05-26T15:59:45.420 回答
5

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

于 2017-05-25T23:31:45.240 回答
5

对我来说是固定的

android/build.gradle

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion '27.0.3'
            }
        }
    }
}
于 2018-09-13T20:18:51.977 回答
4

对于那些正在寻找使用RN 0.42使其工作的人,目前它是反应版本稳定的版本,您可能需要使用Facebook SDK 4.18.0 "com.facebook.android:facebook-android-sdk:4.18.0",它是在发布时react-native-fbsdk@0.5.0发布的版本,否则您可能最终解决问题:https ://developers.facebook.com/bugs/1712442065726889/

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

android/app/build.gradle

...

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)"
}

安卓/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'
            }
        }
    }
}
于 2017-08-30T14:36:04.583 回答
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

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

于 2017-05-26T17:21:23.610 回答