2017-05-25 71 views
34

我正在尝试构建我的react-native项目并使用react-native fbsdk。Facebook Sdk Android错误大厦

不过,我得到这些错误:

/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操作系统上小学0.4.1洛基64。

我正在使用[email protected],因此,[email protected]

我已经尝试过:

  • cd android && ./gradlew clean

  • 删除该项目,并重新npm install

  • ,并尝试在Android的API的23和24

+3

我在同样的问题兄弟,在塞拉利昂的MacOS测试使用相同的API的 –

+1

突然发生在我身上了。 RN 0.41.2&RN-FBSDK 0.5 – atlanteh

回答

26

挖掘到gradle后,我提出了以下解决方案。

关键是要排除react-native-fbsdk所需的facebook-android-sdk并在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" 
} 
+0

我正在使用[email protected],因此,[email protected]。我将编辑该问题。 – Luiz

+2

由于某种原因,这并不是为我效劳 –

+0

请按@atlanteh回答。它肯定会起作用,直到修补程序发布后才能调整'node_modules' imho。我的答案显示更通用的解决方案,适用于类似的问题 – Andreyco

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"

51

显然Facebook已经更新了他们的SDK yesterday和最新的(4.23.0)SDK可能有错误或东西。

您可以通过更改您的node_modules解决此\反应,本机fbsdk \机器人\的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。你可以向下滚动到他的答案或点击here

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

** 另一个更新 **
的Facebook关闭已打开了他们对这个问题的bug,说他们固定SDK。所以现在所有的解决方法都可以删除。

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

+10

编辑'node_modules'中的任何东西都是最好的主意 – Andreyco

+3

显然你是对的。这只是我发现的一种解决方法,以便立即解决此问题。这就是为什么我问为什么有更好的gradle了解的人可以在父build.gradle中解决它,而不是在node_modules – atlanteh

+0

我设法通过在android/app/build中将'compileSdkVersion'设置为'24'来解决这个问题。 gradle'。顺便说一下,你是否能够补充旧的'react-native-fbsdk'(例如0.5.0)?看起来无论如何,它都会引入最新的Android SDK。 – Andreyco

10

我能够在不修改node_modules/...下的文件的情况下解决此问题。我升级了我们的react-native-fbsdk0.6.0然后添加这对我们的应用程序的build.gradle文件在4.22.1版本针脚facebook-android-sdk

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" 
    ... 
} 
+0

升级是一个可行的解决方案。但是,有时不适用。 – Luiz

+1

只有'项目( ':反应母语-fbsdk'){{ resolutionStrategy { 力 'com.facebook.android:facebook-android-sdk:4.22.1' }} configurations.all}'需要 – paynd

+1

@paynd这可能适用于某些用户,但是在我的应用程序中,它仍然尝试使用较新的SDK作为依赖项,因此我需要在“react-native-fbsdk”项目和我自己的项目中强制它应用程序的配置。 – rtcherry

1

正如你可以看到:我们正在与建设这里有补丁传入,

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

在此期间

如果你使用的反应 - 本机fbsdk V0.5你可以做

yarn add [email protected]://github.com/tugorez/react-native-fbsdk

我已将建议的变化和它的工作:)但请注意我我不会支持这一点,不会保持更新,所以......只要你可以,你应该回到官方图书馆。

4

对于那些谁正在寻找使其工作使用RN 0.42它现在是一个有反应的版本稳定,您可能需要使用Facebook的SDK 4.18.0"com.facebook.android:facebook-android-sdk:4.18.0"这是一个由所释放的一种除了https://developers.facebook.com/bugs/1712442065726889/

,如果你正在艰难的时刻迫使Facebook的SDK被你需要尝试这个东西:那[email protected]发布的时间,否则你可能结束了这个问题

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

的Android /的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' 
      } 
     } 
    } 
}