Facebook Sdk Android Error Building
Asked Answered
A

7

42

I am trying to build my react-native project and using react-native fbsdk.

However, I get these errors:

/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

My current OS is Linux Elementary 0.4.1 Loki x64.

I am using [email protected] and, because of this, [email protected].

I've already tried:

  • cd android && ./gradlew clean

  • delete the project and re npm install it

  • and try in Android API's 23 and 24.

Azo answered 25/5, 2017 at 22:33 Comment(2)
I'm on the same problem bro, tested in MacOS Sierra with the same API'sRehearse
Suddenly happens to me too. RN 0.41.2 & RN-FBSDK 0.5Cognac
I
26

After digging into gradle, I came up with following solution.

Key is to exclude facebook-android-sdk required by react-native-fbsdk and pull in desired (working) version on facebook-android-sdk module - preferably without modifying anything in node_modules folder.

Fortunately, gradle offers this.

// 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"
}
Idealism answered 25/5, 2017 at 22:42 Comment(6)
I am using [email protected] and, because of this, [email protected]. I'll edit the question.Azo
For some reason this is not woking for meErl
Follow @Cognac answer then. It will work for sure, until patch is published its okay to adjust node_modules imho. My answer show more general solution, applicable to similar issuesIdealism
@RamonJamOnCanales I got same issue but solved using this inside buidl.gradle configurations.all { resolutionStrategy { force 'com.facebook.android:facebook-android-sdk:4.22.1' .... } } https://mcmap.net/q/382578/-facebook-sdk-android-error-buildingLovering
Thanks... That answer save my dayLarva
it's not working for me on react-native v0.51.0 and RN-fbsdk v0.6.3: problem occurred evaluating project ':app'. > Could not find method exclude() for arguments [{group=com.facebook.android, module=facebook-android-sdk}] on project ':react-native-fbsdk' of type org.gradle.api.Project.Ilex
C
51

Apparently facebook has updated their sdk yesterday and the latest (4.23.0) sdk may have a bug or something.

You can resolve this by Changing your node_modules\react-native-fbsdk\android\build.gradle from:

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

To:

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

I'm no gradle guy so if someone knows of a better way of forcing the version from parent gradle.build, please comment and I'll update the answer.

** EDIT **

@Andreyco managed to solve this without changing node_modules. You can scroll down to his answer or click here.

Also, as notified by @JuanJoseTugores there's a pull request in react-native-fbsdk waiting to be approved, so you can check the bug's progress and be notified when it's resolved.

** Another Update **
Facebook closed the bug that was opened for them regarding this issue, saying they fixed the sdk. So now all the workarounds can be removed.

Apparently FB still not solved this. We just upgraded to RN 0.44 & FB 0.6.0

Cognac answered 26/5, 2017 at 0:25 Comment(12)
Editing anything in node_modules is greatest idea everIdealism
Obviously you are right. This is only a workaround I found in order to immediately solve this problem. This is why I asked if someone with a better gradle understanding can solve it in the parent build.gradle which is not in node_modulesCognac
I did manage to solve this by setting compileSdkVersion to 24 in android/app/build.gradle. Btw, were you able to complite older react-native-fbsdk (e.g. 0.5.0)? It looks like no matter what, it pulls in latest Android SDK.Idealism
After updated compileSdkVersion in your android/app/build.gradle file, please also make sure you have the corresponding SDK installed (Android Studio > Configure > SDK Manager > API Level).Buatti
@Idealism no, I'm not able to compile 0.5.0 anymore :/. you could always fork the project and apply this changes.Kingdon
Trying to come up with better solution, as you are suggesting. There must be a way. Looked into react-native-fbsdk source, and I think dependency on Android SDK is being specified too loose. 4+ is no way to go, imhoIdealism
github.com/facebook/react-native-fbsdk/pulls check the latest pull request guysKingdon
anyone has a solution to deal with it in CI processes? (for an example, buddybuild)Emersed
We use BuddyBuild, but we just upgraded to latest RN. However, BuddyBuild have custom scripts you can use, like the pre build script and change the data in the node_modules (sucks, yeah)Cognac
A colleague of mine suggested the following (which worked for me!): Edit settings.gradle to override the location of the build.gradle for the project in node_modules by project(':react-native-fbsdk').buildFileName = "your location to the new build.gradle file". So you can make a copy of the build.gradle for react-native-fbsdk and store it outside node_modules and use that (and even check in to version control).Billiot
@Cognac I did manage to resolve this by adjusting gradle config only. Check out my answer if interested.Idealism
I had to force react-native-fbsdk to version 0.5.0 and changed the above to 4.22.1 in node_modules. It was the only thing that worked. I am using React 0.42 because my other dependencies were built against react-native 0.42 (I'm using ReactXP).Deicide
I
26

After digging into gradle, I came up with following solution.

Key is to exclude facebook-android-sdk required by react-native-fbsdk and pull in desired (working) version on facebook-android-sdk module - preferably without modifying anything in node_modules folder.

Fortunately, gradle offers this.

// 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"
}
Idealism answered 25/5, 2017 at 22:42 Comment(6)
I am using [email protected] and, because of this, [email protected]. I'll edit the question.Azo
For some reason this is not woking for meErl
Follow @Cognac answer then. It will work for sure, until patch is published its okay to adjust node_modules imho. My answer show more general solution, applicable to similar issuesIdealism
@RamonJamOnCanales I got same issue but solved using this inside buidl.gradle configurations.all { resolutionStrategy { force 'com.facebook.android:facebook-android-sdk:4.22.1' .... } } https://mcmap.net/q/382578/-facebook-sdk-android-error-buildingLovering
Thanks... That answer save my dayLarva
it's not working for me on react-native v0.51.0 and RN-fbsdk v0.6.3: problem occurred evaluating project ':app'. > Could not find method exclude() for arguments [{group=com.facebook.android, module=facebook-android-sdk}] on project ':react-native-fbsdk' of type org.gradle.api.Project.Ilex
C
11

I was able to resolve this without modifying files under node_modules/.... I upgraded our react-native-fbsdk version to 0.6.0 and then add this to our application's build.gradle file to pin facebook-android-sdk at version 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'
        ...
    }
}

Edit: We are building with:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    ...
}
Carmelitacarmelite answered 26/5, 2017 at 15:59 Comment(3)
Upgrading is a working solution. However, sometimes unapplicable.Azo
Only project(':react-native-fbsdk') { configurations.all { resolutionStrategy { force 'com.facebook.android:facebook-android-sdk:4.22.1' } } } neededDenby
@Denby That may work for some users, however in my application it was still attempting to use the newer SDK as a dependency and as a result I needed to force it in both the react-native-fbsdk project and in my own application's configuration.Carmelitacarmelite
U
5

I just encountered this error. First, RN Facebook SDK v.0.6.0 only works for react-native >= 0.44.0, so you have to update your dependency in package.json to react-native: ^0.44.0. Then go to Android build.gradle file and make this changes: compileSdkVersion 25 and compile "com.android.support:appcompat-v7:25.0.0"

Undamped answered 25/5, 2017 at 23:31 Comment(0)
C
5

this fixed for me

in android/build.gradle

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion '27.0.3'
            }
        }
    }
}
Coati answered 13/9, 2018 at 20:18 Comment(0)
G
4

For those who are looking for make it work using RN 0.42 which by now is the one with react version stable you may need to use the Facebook SDK 4.18.0 "com.facebook.android:facebook-android-sdk:4.18.0" which is the one that was released by the time that [email protected] was released, otherwise you may be ending up with the issue: https://developers.facebook.com/bugs/1712442065726889/

Besides, if you are getting hard times to force the facebook sdk to be what you need try this:

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'
            }
        }
    }
}
Georgeannageorgeanne answered 30/8, 2017 at 14:36 Comment(0)
K
1

As you can see here there is patches incoming,

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

in the meantime if you're using react-native-fbsdk v0.5 you could do

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

I've applied the suggested changes and it's working :) but please be aware I'll no support this and wont keep it update so... as soon as you can you should go back to the official library.

Kingdon answered 26/5, 2017 at 17:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.