Facebook Sdk Android 构建错误
Facebook Sdk Android Error Building
我正在尝试构建我的 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
我当前的 OS 是 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 中尝试。
在深入研究 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"
}
我刚遇到这个错误。首先,RN Facebook SDK v.0.6.0 仅适用于 react-native >= 0.44.0
,因此您必须将 package.json
中的依赖项更新为 react-native: ^0.44.0
。然后转到 Android build.gradle
文件并进行以下更改:compileSdkVersion 25
和 compile "com.android.support:appcompat-v7:25.0.0"
显然 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 的情况下解决了这个问题。您可以向下滚动到他的答案或单击 。
此外,根据@JuanJoseTugores 的通知,有一个 pull request in react-native-fbsdk 等待批准,因此您可以检查错误的进度并在问题解决时收到通知。
** 另一个更新 **
Facebook 关闭了为他们打开的有关此问题的 bug,说他们修复了 sdk。所以现在可以删除所有解决方法。
貌似FB还没有解决这个问题。我们刚刚升级到 RN 0.44 & FB 0.6.0
我能够在不修改 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"
...
}
如您所见,有补丁传入,
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
我已经应用了建议的更改并且它正在运行 :) 但请注意我不会支持这个并且不会保持更新所以......您应该尽快返回官方图书馆。
对于那些正在寻找使用 RN 0.42 使其工作的人,目前 React 版本稳定,您可能需要使用 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'
}
}
}
}
this 为我修好了
在android/build.gradle
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
}
}
}
}
我正在尝试构建我的 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
我当前的 OS 是 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 中尝试。
在深入研究 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"
}
我刚遇到这个错误。首先,RN Facebook SDK v.0.6.0 仅适用于 react-native >= 0.44.0
,因此您必须将 package.json
中的依赖项更新为 react-native: ^0.44.0
。然后转到 Android build.gradle
文件并进行以下更改:compileSdkVersion 25
和 compile "com.android.support:appcompat-v7:25.0.0"
显然 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 的情况下解决了这个问题。您可以向下滚动到他的答案或单击
此外,根据@JuanJoseTugores 的通知,有一个 pull request in react-native-fbsdk 等待批准,因此您可以检查错误的进度并在问题解决时收到通知。
** 另一个更新 **
Facebook 关闭了为他们打开的有关此问题的 bug,说他们修复了 sdk。所以现在可以删除所有解决方法。
貌似FB还没有解决这个问题。我们刚刚升级到 RN 0.44 & FB 0.6.0
我能够在不修改 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"
...
}
如您所见,有补丁传入,
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
我已经应用了建议的更改并且它正在运行 :) 但请注意我不会支持这个并且不会保持更新所以......您应该尽快返回官方图书馆。
对于那些正在寻找使用 RN 0.42 使其工作的人,目前 React 版本稳定,您可能需要使用 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'
}
}
}
}
this 为我修好了
在android/build.gradle
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
}
}
}
}