命令失败:在React-Native中安装依赖项(如导航、Firebase、图标等)时出现gradlew.bat installDebug错误。

21
每当我在react native项目中安装依赖并使用链接命令,例如react-native link react-native-gesture-handler时,会引发错误,如图[1]所示。它不会构建该项目,显示gradlew.bat错误。
以下代码显示我的package.json文件:
{
  "name": "navigations",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.6.3",
    "react-native": "0.58.3",
    "react-native-gesture-handler": "^1.0.15",
    "react-navigation": "^3.0.9"
  },
  "devDependencies": {
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "24.0.0",
    "jest": "24.0.0",
    "metro-react-native-babel-preset": "0.51.1",
    "react-test-renderer": "16.6.3"
  },
  "jest": {
    "preset": "react-native"
  }
}

1
显然你的 settings.gradle 文件已经损坏了。在 link 命令之后,它的内容是什么? - diogenesgg
是的,这发生在链接的命令之后。 - Ovais Butt
10个回答

42

如果您使用的是Windows计算机,请按照以下步骤操作:

Optional (
  Delete iOS, Android folders

  Run `react-native eject` ( that command will rebuild deleted folders for you )
)

然后:

1)cd ./android

2)./gradlew.bat installDebug(以句点开头)

一旦成功完成

3)cd ../(返回到根目录)

4)react-native run-android

希望一切正常:) [对我来说是这样的]


15
在Windows系统中,“./”无法使用。省略“./”并运行“gradlew.bat installDebug”即可。我也遇到了同样的问题,这个方法对我有效。 - LordAnari
1
可选的( 删除iOS、Android文件夹运行 react-native eject (该命令将为您重建已删除的文件夹) ) 你从哪里得到这个的? - Muhammad Sharif
1
描述不清楚。第二个命令无法运行。 - Mehmet Eyüpoğlu
那么 Mac 呢? - Sami Ullah
你需要添加引号 "./gradlew.bat" installDebug - zoran404
我的问题与Java-SDK版本有关,我将其更改为8,现在一切正常。 - Sami Ullah

3

以下是我解决这个问题的步骤。

步骤1:打开 Android Studio -> 文件 -> 清除缓存.. [选择所有 -> 点击清除并重启]

Android Studio -> 文件 -> 清除缓存

步骤2:打开设备管理器 -> 选择设备 -> 使用“擦除数据”和“冷启动”

使用“擦除数据”和“冷启动”

步骤3:在 PowerShell 中运行npx react-native run-android

如果构建未成功,则使用以下步骤。

步骤3.1:打开2个 PowerShell 命令窗口,然后

  1. 启动Metro捆绑程序:npx react-native start --reset-cache --port 8084
  2. 运行“run-android”:npx react-native run-android

或者,如果仍然无法成功构建,请尝试以下步骤。

步骤4:创建另一个具有支持的 API 级别的设备。我使用了 API 33 -> R 30 (API 级别)。现在请使用步骤3。

享受和愉快的编码...


2
cd ./android
create file file local.properties

将以下代码粘贴 sdk.dir=C\:\\Users\\muhammad ali\\AppData\\Local\\Android\\Sdk 更改为您的sdk所在的位置完成。 如果您已经拥有local.properties文件,则可以找到类似的代码 sdk.dir=C\:\\Users\\muhammad ali\\AppData\\Local\\Android\\Sdk 并按照您的sdk所在位置更改。完成。


1
今天我也遇到了同样的问题...不知道你解决了吗?
进入android文件夹,然后找到settings.gradle文件。
你可能会在第三行找到它。

'..\node_modules\react-native-gesture-handler\android'

将所有这些反斜杠替换为正斜杠,就像这样

'../node_modules/react-native-gesture-handler/android'

如果这有帮助,请告诉我...


是的,这很有帮助。我用“/”替换了所有的“\”,并通过命令“gradlew clean”清理了gradlew,代码运行良好。 - Ovais Butt
@OvaisButt 谢谢你提醒我 gradlew clean。在运行 gradlew.bat installDebug 后,我忘记做这件事了。 - Bipin

0
有时候这个错误是由调试密钥库引起的,至少在我的情况下是这样。
我所做的是:
我运行了这个命令来生成一个新的调试密钥库。
Windows用户:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

MAC / Linux 用户:

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

回答提示问题。

当密钥库成功生成后,前往 android/app 并将密钥库文件放置在那里,同时更新您的 android/app/build.gradle 文件:


  signingConfigs {
        debug {
            storeFile file('the-keystore-name.keystore')
            storePassword 'the-keystore-prompt-password'
            keyAlias 'the-keystore-alise-name'
            keyPassword 'the-keystore-promtp-password'
        }

    }

谢谢!只需再次运行yarn android,现在应该可以构建了。

祝你好运!


0

请确保您已经安装了Python 2和最新版本的JDK,并且已经设置了ANDROID_HOME。


0

我在创建设置为MainActivity.java的启动画面时遇到了同样的问题。然后我降级了React Native版本(0.59.8)。我没有更改gradle版本。


0

我曾经遇到过同样的问题,但是我使用了一种不寻常的解决方案,但它确实帮助了我。 在创建React Native项目后,通过Android Studio打开android文件夹, 它会正确配置您的gradle,然后您就可以在模拟器上运行应用程序。


0
为解决这个问题,只需在您的 build.gradle 文件中更改 compileSdkVersion。 打开 android > build.gradle 文件 将 compileSdkVersion 从 29 更改为 30。 将 targetSdkVersion 从 29 更改为 30。 现在再次运行。 /如果这不起作用,请查看此链接/

-1

我进入了Android Studio并在高级设置中编辑了我的模拟设备的存储容量(RAM,VM堆,内部存储器,移除SD卡)。我相信我将每个设置都提高了。

虚拟设备设置

我不确定这是否能解决您的问题,但它确实解决了我的问题。

之后,我重新创建了一个新项目(npx react-native ...),然后它就像魔术般地运行了。

就我的电脑而言,它有足够的存储和RAM,所以我对这些限制并不太担心。祝好运

API = 33
Android Studio版本=2021.2


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

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