Android上的React Native无法找到构建工具


92

是什么引起以下问题?我的Android SDK版本不受支持吗?

Starting JS server...                                                                     
Building and installing the app on the device (cd android && gradlew.bat installDebug)...

FAILURE: Build failed with an exception.                                                  

* What went wrong:                                                                        
A problem occurred configuring project ':app'.                                            
> failed to find Build Tools revision 23.0.1       

从SDK Manager v25开始,您现在必须从Android Studio安装正确的构建工具,因为该android命令已删除:stackoverflow.com/a/44295114/82609
Sebastien Lorber

Answers:


136

可能您需要更新构建工具。

当我尝试从图形界面进行更新时遇到了问题,它没有显示确切的次要版本,因此无法更新。

通过查看终端提供的版本来解决此问题:

android list sdk -a

[...]
Packages available for installation or update: 156
1- Android SDK Tools, revision 24.4
2- Android SDK Platform-tools, revision 23.0.1
3- Android SDK Platform-tools, revision 23.1 rc1
4- Android SDK Build-tools, revision 23.0.1

[...]

并使用以下命令安装正确的版本:

android update sdk -a -u -t 4

3
这个android程序是什么?我在哪里得到的?
jameshfisher

2
@jameshfisher它是Android SDK的一部分,位于“工具”目录中,例如:〜/ android-sdk / tools / android
edur

我尝试使用Android Studio进行几次更新,但从未成功。这个命令确实做到了。谢谢。
jordancooperman

实际在react项目中是在android-sdk-linux中。
Ghita Tomoiaga

请注意,在新版本的SDK Manager中,该android命令不再起作用,并且必须运行Android Studio才能访问此设置,请参阅stackoverflow.com/a/44295114/82609
Sebastien Lorber

73

请注意-由于您安装的构建工具的唯一版本太新,因此可能会出现此错误。

我恰好得到了OP的错误(抱怨react-native找不到Build Tools版本23.0.1)。当我检查Android SDK Manager时,看到了以下内容:

屏幕截图显示了23.0.2“已安装”但23.0.1“未安装”

我天真地认为,安装最新版本的Build-tools(在撰写本文时为23.0.2)可以,但显然不行。另外安装23.0.1可解决此问题。


这里同样的问题。有没有办法使用更新的构建工具?也许一些配置。
sodik '16

这个建议也对我有用。23.0.2太新了,去看看。谢谢。
费尔南多

1
@boatcoder这个答案(安装较旧的构建工具)与sodik的正确性相当(修改build.gradle以使React Native使用较新的构建工具)。Android Build Tools似乎遵循SemVer,因此修改build.gradle为使用更高版本的补丁程序或次要版本通常应该是安全的,可能会提供一些平台级的错误修正或性能改进,从而省去了下载任何内容的麻烦。但是,如果在主要版本上完成,它将破坏您的应用程序,并且即使在修补程序/次要版本中也引入了一些风险,因为您将RN与Facebook不需要的构建工具一起使用。
Mark Amery

28

我也遇到了较新版本的SDK Build工具(与Mark相同)的问题,但是我设法通过修改android/app/build.gradle和设置适当的版本来解决它,例如

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
...

更新:正如Mark所建议的,以这种方式仅更新次要(或补丁)版本是明智的。更新此版本的另一个原因是,当您有很多带有本机部分的第三方库时-您可能最终都更新了它们。因此,您必须权衡新版本与更多工作之间可能带来的好处。


1
不要忘了更改行85 targetSdkVersion 22targetSdkVersion 23为好。
仙林

我发现生成的build.gradle文件具有buildToolsVersion“ 23.0.1”,但是我仅安装了版本23(23.0.0)-不知道“ react-native init”是从哪里找到android / tools SDK版本号的。因此,原因实际上是react-native init命令未使用可用工具的版本号?
费迪尔2016年

我相信23.0.1是固定的(可能会随RN版本更改),但是没有检测到afaik。
sodik '16

谢谢,这解决了我的问题,从23更改为25,从23.0.1更改为25.0.0
niren

4

需要修改4个文件

grep buildToolsVersion * -r | grep 23.0.1

Examples/Movies/android/app/build.gradle:    buildToolsVersion "23.0.2"
Examples/UIExplorer/android/app/build.gradle:    buildToolsVersion "23.0.2"
ReactAndroid/build.gradle:    buildToolsVersion "23.0.2"
local-cli/generator-android/templates/src/app/build.gradle:    buildToolsVersion "23.0.2"

3

我不得不将我的Android项目更改build.gradle为:

compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.demoproject"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

3

这意味着系统上安装的Android Build Tools不同于应用程序的配置文件(您的配置文件指向23.0.1),但是系统上可能有23、24或25.0。*。

解决此问题的解决方案:

  1. 编辑build.gradle位于anroid/app项目文件夹下的文件
  2. 查找条目buildToolsVersion“ 23.0.1”,并将其替换为系统上拥有的最新版本。你可以在这里找到它:C:\Program Files (x86)\Android\android-sdk\build-tools

或者,您可以尝试在系统中安装build.gradle文件中具有的版本(使用SDK管理器)。


1

在Android SDK Manager v25中,您必须直接从Android Studio安装正确的构建工具,因为该android命令不再起作用:

从android studio安装


从Andriod Studio中进入此屏幕。文件->设置-> Android SDK-> SDK工具->右下角“显示软件包详细信息”我添加了此注释,因为我花了一段时间才找到它。
杰森·艾尔斯霍恩

1

/Users/username/Library/Android/sdk/build-tools目录中找到版本号,然后修改buildToolsVersion与Gradle配置相对应的版本号


1

如果您拥有Build Tools版本24.0.1,则将其更新build.gradle以匹配buildToolsVersion "24.0.0"

Android/Sdk/build-tools/24.0.1/source.properties已经Pkg.Revision定了24.0.0


0

我在响应本机文档后尝试在命令行中进行构建时遇到了这个问题。我通过在android studio中打开项目解决了这个问题。不匹配的依赖项将出现在应用程序底部的构建失败小吃栏中。对于每个失败,请单击链接以解决问题。


0

我发现,如果您从react-native项目中卸载了一些软件包,并且在页面底部的构建gradle依赖项中仍然存在软件包,也会发生这种情况,例如:

{ project(':react-native-sound-player') } 确保在删除项目后删除MainApplication.java文件中的关联代码(':react-native-sound-player')

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.