React-Native-FB SDK与com.android.support依赖项的错误

8
 > A problem occurred configuring project ':react-native-fbsdk'.
  > Could not resolve all dependencies for configuration ':react-native-fbsdk:_debugPublishCopy'.
     > Could not find com.android.support:appcompat-v7:27.0.1.
       Searched in the following locations:
           file:/<location_to_sdk>/sdk/extras/android/m2repository/com/android/support/appcompat-v7/27.0.1/appcompat-v7-27.0.1.pom
           file:/<location_to_sdk>/sdk/extras/android/m2repository/com/android/support/appcompat-v7/27.0.1/appcompat-v7-27.0.1.jar
           file:/<location_to_app>/android/sdk-manager/com/android/support/appcompat-v7/27.0.1/appcompat-v7-27.0.1.jar
       Required by:
           newPtMobile:react-native-fbsdk:unspecified

今天早晨我运行了react-native run-android,没有对代码进行任何更改或添加新的包,但是它之前一直工作正常。

"react-native": "0.50.3","react-native-fbsdk": "0.6.3"

我发现在我的 sdk/extras/android/m2repository/com/android/support 子文件夹中缺少android支持库,所有子文件夹中的最后一个都是 26.0.0-alpha1 文件夹。我已经尝试通过android studio删除支持库并重新安装,也手动下载了最新的 android_m2repository,但是这些文件夹仍然缺失。

我困扰的是,为什么https://dl.google.com/dl/android/maven2/index.html中的 google's maven repository 显示,例如 m2repository/com/android/support/appcompat-v7 应该有一个名为 27.0.2 的文件夹(还有一些缺失的旧版本),但即使在他们提供的最新的 android_m2repository 中也找不到!

https://dl.google.com/android/repository/android_m2repository_r48.zip

6个回答

16

我也遇到了同样的问题。通过更新我的 ROOT : android/build.gradle 文件,我成功地构建了项目。

步骤:
1. 只需在 allprojects 部分添加一个新的 maven 行以获取 maven.google.com 仓库中的资源。
2. 添加 resolutionStrategy 将限制你的 Android fbsdk 版本至 4.28.0

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        configurations.all {
        resolutionStrategy {
            force 'com.facebook.android:facebook-android-sdk:4.28.0'
        }
    }
        maven {
            url "https://maven.google.com"
        }
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
      }
  }

1
谢谢,当我添加 https://maven.google.com 后,它会下载缺失的项目。但在我的情况下,我还必须将我的 android/app/build.gradle 和 android/build.gradle 更改为 26、27.0.2。 - chii
是的,您需要更新项目:android/app/build.gradle以及您在项目中链接的所有库。将FBSDK: android/build.gradle更新到26、27.0.2版本。@chii - Syed Zain Ali

6
我看到有另一个帖子也在讨论同样的问题:运行react-native run-android时出现错误 那里推荐的解决方案与Sutani的解决方案接近,即编辑node_modules/react-native-fbsdk/android/build.gradle并添加 compile('com.facebook.android:facebook-android-sdk:4.28.0') 这似乎不是由react-native-fbsdk引入的回归,而是由Google Android库引入的,但我不完全清楚。

0

我有同样的问题,我用以下方法解决:

  1. 编辑 package.json 文件,将 react-native-fbsdk": "0.6.3" 修改为 react-native-fbsdk": "0.6.0"

  2. 进入你的 node_modules/react-native-fbsdk/android/build.gradle 文件,打开 build.gradle 文件。

  3. compile('com.facebook.android:facebook-android-sdk:4++') 修改为 compile('com.facebook.android:facebook-android-sdk:4.22.1')

但我不确定这是否是最佳解决方案,谢谢。


0

关键在于你的错误信息中所显示的内容:

在以下位置进行了搜索: file:/<location_to_sdk>/sdk/extras/android/m2repository/com/android/support/appcompat-v7/27.0.1/

我也遇到了同样的问题。然后我去了这个位置:

file:<location_to_sdk>/sdk/extras/android/m2repository/com/android/support/appcompat-v7/

发现没有名为27.0.1的目录,因为在我的情况下最新的buildTool没有被下载。在我的情况下,我有27.0.0-alpha1

所以在我的应用程序build.gradle

node_modules/react-native-fbsdk/android/build.gradle

我将27.0.1替换为27.0.0-alpha1,构建成功。


0
CUR_SPACE=.
culpritLocation=$CUR_SPACE/node_modules/react-native-fbsdk/android/build.gradle

sed -i -e 's/com.facebook.android:facebook-android-sdk:4.+/com.facebook.android:facebook-android-sdk:4.26.0/' $culpritLocation

printf "Fixed Could not resolve all dependencies for configuration ':react-native-fbsdk:_debugPublishCopy'.\n> Could not find com.android.support:appcompat-v7:27.0.1."
printf "fix_rn_fbsdk_google_libraries.sh should be removed at a later time\n"

将上述脚本放置在React Native项目的根目录中,为其添加执行权限,然后在package.json文件中的postinstall属性中添加./your-script-name.sh;。例如:
{
  "name": "AppName",
  "version": "1.28.14",
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "postinstall": "./fix_rn_fbsdk_google_libraries.sh; ./infuse_version.sh;"
  },
  [..]
}

如果您不熟悉 postinstall 脚本,它们将在运行 npm install / yarn 命令后立即运行。

所提出的解决方案适用于云构建工具 :),并且仅是暂时的。未来的 rn-fbsdk 发布应该会修复这个问题。


你能否更详细地描述你的答案,以便更清楚地理解? - Prags
如原评论所述,您需要在项目的根文件夹中创建一个名为 your-script-name.sh 的文件,然后在 package.json 文件中添加(如果尚未使用)postinstall 属性。如果脚本具有执行权限并且内容与原始答案中的内容相同,则可以解决该问题。 - WebRaptor

0

build.gradle --- 应用程序

dependencies {
    compile 'com.facebook.react:react-native:+' // support react-native-v0.22-rc+
    compile('com.facebook.android:facebook-android-sdk:4.+')
}

    allprojects {
        repositories {
            configurations.all {
                resolutionStrategy {
                    force 'com.facebook.android:facebook-android-sdk:4.28.0'
                }
            }
        }
    }


Solution:

How to fix the file permissions, after loading end react-native start

First, Go to android folder

cd android

Now clean the project...

gradlew clean //for Mac users, change gradlew to ./gradlew

Now run the build process again in the root folder 
cd ..
react-native run-android

Solved Issue Happy Coding!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接