【问题标题】:Facebook Sdk Android Error BuildingFacebook SDK Android 错误构建
【发布时间】:2017-10-26 17:07:16
【问题描述】:

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

【问题讨论】:

  • 兄弟,我遇到了同样的问题,在 MacOS Sierra 中使用相同的 API 进行了测试
  • 突然发生在我身上。 RN 0.41.2 & RN-FBSDK 0.5

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


【解决方案1】:

在深入研究 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"
}

【讨论】:

  • 我正在使用 react-native@0.37.0,因此使用 react-native-fbsdk@0.4.0。我将编辑问题。
  • 出于某种原因,这对我来说不是 woking
  • 那么请关注@atlanteh 的回答。它肯定会起作用,直到补丁发布之前可以调整node_modules imho。我的回答显示了更通用的解决方案,适用于类似的问题
  • @RamonJamOnCanales 我遇到了同样的问题,但在 buidl.gradle configurations.all { resolutionStrategy { force 'com.facebook.android:facebook-android-sdk:4.22.1' .... } } stackoverflow.com/a/44205756/292927
  • 谢谢...这个答案拯救了我的一天
【解决方案2】:

我刚刚遇到这个错误。首先,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"

【讨论】:

    【解决方案3】:

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

    ** 编辑 **

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

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

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

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

    【讨论】:

    • node_modules 中编辑任何内容是有史以来最棒的想法
    • 显然你是对的。这只是我为了立即解决此问题而找到的一种解决方法。这就是为什么我问是否有更好的 gradle 理解的人可以在不在 node_modules 中的父 build.gradle 中解决它
    • 我确实设法通过在android/app/build.gradle 中将compileSdkVersion 设置为24 来解决这个问题。顺便说一句,你能编译旧的react-native-fbsdk(例如 0.5.0)吗?看起来无论如何,它拉入了最新的Android SDK。
    • 在您的android/app/build.gradle 文件中更新compileSdkVersion 后,请确保您已安装相应的SDK(Android Studio > 配置> SDK 管理器> API 级别)。
    • @Andreyco 不,我无法再编译 0.5.0 了:/。您可以随时 fork 项目并应用此更改。
    【解决方案4】:

    我能够在不修改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"
        ...
    }
    

    【讨论】:

    • 升级是一种可行的解决方案。但是,有时不适用。
    • 只需要project(':react-native-fbsdk') { configurations.all { resolutionStrategy { force 'com.facebook.android:facebook-android-sdk:4.22.1' } } }
    • @paynd 这可能对某些用户有用,但是在我的应用程序中,它仍在尝试使用较新的 SDK 作为依赖项,因此我需要在 react-native-fbsdk 项目和在我自己的应用程序的配置中。
    【解决方案5】:

    正如您在此处看到的,有补丁传入,

    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

    我已经应用了建议的更改并且它正在运行 :) 但请注意,我不支持此操作,也不会保持更新,所以...您应该尽快返回官方图书馆。

    【讨论】:

      【解决方案6】:

      对于那些正在寻找使用 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)"
      }
      

      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'
                  }
              }
          }
      }
      

      【讨论】:

        【解决方案7】:

        this 为我修复

        android/build.gradle

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-08
          • 2021-01-25
          相关资源
          最近更新 更多