ChatGPT解决这个技术问题 Extra ChatGPT

React Native android 构建失败。未找到 SDK 位置

开始运行android时出现错误

What went wrong:
A problem occurred evaluating project ':app'.  
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
这发生在我的第一个 hello world 中,即使 env 变量设置正确,我所做的是,在 android studio 中打开 android 文件夹并点击运行按钮(绿色播放图标)它工作,确保你的地铁在您执行此操作时正在运行,我认为它正在发生,因为我在安装后没有打开 android studio,当我在 andriod studio 中打开 android 文件夹时,我注意到它更新了一些东西,现在甚至 npm run android 工作正常

R
Ronan Boiteau

转到您的 react-native 项目的 android/ 目录

使用以下行创建一个名为 local.properties 的文件:

sdk.dir = /Users/USERNAME/Library/Android/sdk

其中 USERNAME 是您的 macOS 用户名


出了什么问题:配置项目 ':app' 时出现问题。 > SDK 目录“/usr/local/android-sdk”不存在。但实际上我的 sdk 存在于这条路径中
你们解决了这个问题吗?我现在也面临这个问题。
我可以通过从 Android Studio 运行来解决这个问题。完成后,它可以从命令行运行。
是的,创建 local.properties 确实解决了我的问题。奇怪但有效。
如果您在 Windows sdk.dir = C:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk
N
Naveen T P

转到您的 React-native 项目 -> Android 创建一个文件 local.properties 打开文件粘贴您的 Android SDK 路径,如下所示 Windows sdk.dir = C:\\Users\\USERNAME\\AppData\\Local\\Android\ \sdk 在 macOS sdk.dir = /Users/USERNAME/Library/Android/sdk 在 linux sdk.dir = /home/USERNAME/Android/Sdk

USERNAME 替换为您的用户名

现在,在终端中运行 react-native run-android


我将我的 SDK 移至我的外部驱动器。使用 macOS Sierra 为我工作。
在 Linux sdk.dir=/home/USERNAME/Android/Sdk
sdk.dir = /home/USERNAME/Android/Sdk -> 适用于 linux 但适用于 Linux 的 Android Studio 需要存在并且可以正常工作(gradle running)
显示错误* 出了什么问题:配置项目 ':app' 时出现问题。 > SDK 目录“/Users/chandni sharma/Library/Android/sdk”不存在。
@Chandni 确保您已安装 Android SDK
N
Nish

您可以尝试添加 ANDROID_PATH

export ANDROID_HOME=/Users/<username>/Library/Android/sdk/
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

我已经在环境中有 ANDROID_PATH(Ubuntu、.bashrc 文件)。但是,由于某些原因,我仍然遇到问题。我通过创建 local.properties 并按照其他答案中的说明放置路径来修复它。
我有一个 mac 和 env var ANDROID_HOME 没有帮助。但是,local.properties 做到了。
对我来说,我使用 direnv,所以我在 .env 中添加了基本相同的东西,现在 react-native run-android 至少启动了模拟器。我有 ANDROID_HOME=$HOME/Library/Android/sdk/; PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools 但在两条线上。
V
Void Asif

打开 ~/.bash_profile 并添加:

 export ANDROID_HOME=~/Library/Android/sdk/
 export PATH=$PATH:~/android-sdks/platform-tools/
 export PATH=$PATH:~/android-sdks/tools/

源〜/ .bash_profile

https://i.stack.imgur.com/OMxtg.png


作品。记得重启终端,或者输入 source ~/.bash_profile 使新的导出行生效。
如果有任何机构无法找到 bash_profile,您能否添加,然后创建一个,因为他们无法找到第一个计时器(我也是:p)
l
locropulenton

我认为不建议更新 local.properties 文件来添加缺少的环境变量。

更新您的环境变量:

如何从 iTerm2 打开 OSX 上的 AVD 管理器?

机器人 28 / 机器人 30

sdk 可以安装在 /Library/Android/sdk 或 /usr/local/ 以确保通过

which sdkmanager

导出 ANDROID_HOME

export ANDROID_HOME=$HOME/Library/Android/sdk

或者

export ANDROID_HOME="/usr/local/share/android-sdk"

然后将其添加到 $PATH

export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/build-tools/28.0.1:$PATH

机器人 23

export ANT_HOME=/usr/local/opt/ant
export MAVEN_HOME=/usr/local/opt/maven
export GRADLE_HOME=/usr/local/opt/gradle
export ANDROID_HOME=/usr/local/share/android-sdk
export ANDROID_SDK_ROOT=/usr/local/share/android-sdk
export ANDROID_NDK_HOME=/usr/local/share/android-ndk
export INTEL_HAXM_HOME=/usr/local/Caskroom/intel-haxm

我使用 brew caskthese instructions 之后安装 Android SDK

更多信息参见https://developer.android.com/studio/intro/update#sdk-manager


那是最好的答案,无需更改 local.properties。非常适合我
为什么这是不好的做法?真的很好奇,因为似乎进行本地化更改比更改系统路径更安全
因为如果此代码将被检入源代码控制,下一个尝试使用它构建的人最终会查看此页面。
运行命令 source ~/.bash_profile 以更新/刷新当前终端会话。
iterm2 的最新版本(我使用的是 3.4),他们使用 zsh,所以将上面的行写入 $HOME/.zshrc
s
snowcamel

echo "sdk.dir = /Users/$(whoami)/Library/Android/sdk" > android/local.properties


这是最安全的方式,因为您不会更改任何全局系统文件。对于那些对他们的机器没有这种类型的管理员访问权限的人。
C
Christiane

如果您使用的是 Windows 转义(添加反斜杠),则 android/local.properties 文件中的反斜杠和冒号。如果它不存在然后创建它

sdk.dir = C\:\\Android\\sdk

对于 Windows,Android SDK 位于 C:\Program Files\Android\android-sdk 下
C
Community

更新了 React Native0.58 在 MAC/Unix 上入门的步骤

在终端中打开 bash_profile

纳米〜/ .bash_profile

滚动到底部并从 https://facebook.github.io/react-native/docs/getting-started 添加以下行:

export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/tools/bin export PATH=$PATH:$ ANDROID_HOME/平台工具

Control+S to save
Control+X to exit
Y to save changes

更新终端中的更改

源〜/ .bash_profile

验证路径:

回声 $PATH

确认是否一切正常:

亚行设备


救了我一命 :)
有时您需要关闭并重新打开终端
O
Ozesh

对于 Windows 用户

一种简单的解决方案是将 SDK 路径设置为环境变量列表。

转到环境变量。 (您的 PC > 属性)创建新的系统变量 将变量名称设置为 ANDROID_HOME 将变量值设置为您的 Android Sdk 位置 按 OK(3 个对话框的 3 次)

笔记:

您的 Android Sdk 通常位于

C:\Users\YourUserName\AppData\Local\Android\Sdk

确保关闭当前终端,因为您的终端包含所有预先存在的环境变量。


这就对了。无需编辑 local.properties,谢谢。
像魅力一样工作😊。非常感谢!
记得重启你的机器
我错过了“关闭你当前的终端”,天哪,我试过了,我几乎放弃了,我又读了一遍哈哈哈谢谢!这行得通!
D
DBrown

修复 Linux 发行版上的 SDK 路径错误

您的项目没有通过提供的路径在项目设置中找到 SDK 集,因此项目需要指向正确的方向,并且您有几个选项可以完成此操作,但让我们首先找到正确的 SDK 文件夹。

寻找你的 SDK

从包管理器

如果您通过基于 Debian 的发行版中的自定义 PPA 使用基于包的 JRE 安装(如 Java 8 JRE),或者使用 OpenJDK,则该目录很可能是 /usr/lib/jvm/java-8-oracle(或无论您选择什么版本)。您可以在 JAVA_HOME 环境变量中找到此路径集:

$ echo $JAVA_HOME
 /usr/lib/jvm/java-8-oracle

手册下载

如果您通过 Java JRE/SDK 下载安装,它将位于您放置文件夹的任何位置,例如 /home/username/jdk-8u121_1.8.0(或类似的东西)。

脚本安装甚至可以将 SDK 添加到 /opt/java-8-oracle,但在撰写本文时,Java 安装说明将文件夹位置留在您手中。

安卓工作室 2.2

最后,如果您使用的是 Android Studio,SDK 将放置在您设置的位置,以放置通过 Studio 的 SDK 管理器下载的 SDK 文件。通过转到文件 > 设置 > 外观和行为 > 系统设置 > Android SDK,您可以在顶部找到带有更改选项的 SDK 位置设置,默认文件夹为 ~/Android/Sdk。

https://i.stack.imgur.com/7pf1s.png

设置 SDK 路径

现在我们知道了 SDK 在哪里,是时候让 react-native 知道了。

选项 1:使用 local.properties 设置

此方法非常简单,只需在以下文件夹中创建文件 local.properties,其中 Project_Folder 是 React-Native 应用程序的基础:

Project_Folder/Android/App

在 local.properties 中,您希望将变量 sdk.dir 设置为 SDK 文件夹的路径:

sdk.dir=/home/username/Android/Sdk

虽然这是解决问题的最简单方法,但它并不是最好的方法,尤其是在您处理多个项目时。对于每个项目,您必须为每个项目创建此文件,如果文件夹更改,则计划为每个项目的 local.properties 更改此文件。

保存文件后,重新运行 react-native run-android 命令。

选项 2:使用环境变量设置文件夹

另一个选项是将 SDK 文件夹设置为 React-Native 默认查找的本地环境变量。为此,我们将添加 ANDROID_HOME 路径。作为奖励,我们还可以在同一个地方添加我们的 android 工具。我们需要将其添加到我们主目录中的 .bash_profile 或 .profile 文件中,这些文件最后加载,因此我们可以确保没有其他任何东西覆盖我们所做的设置。由于这些位于您的主目录中,因此无需使用升级权限进行编辑。

**$ vim ~/.profile**  (use nano or pico if you prefer)

在文件中添加以下行,将 SDK 文件夹替换为您在上面找到的文件夹。我将以 Android Studio 文件夹为例:

export ANDROID_HOME="~/Android/Sdk"
export PATH=$PATH:~/Android/Sdk/tools:~/Android/Sdk/platform-tools

保存文件,然后应用配置文件设置:

$ source ~/.profile
$ echo $ANDROID_HOME
/home/dbrown/Android/Sdk

如果 Sdk 文件夹显示正确,恭喜!重新运行您的 react-native 命令,并观察应用程序构建过程继续进行。

如果您仍有问题

如果由于某种原因您收到错误 "> failed to find target with hash string 'android-23' in: your/sdk/folder, 您需要确保项目的构建版本和安装的 SDK 版本匹配(React -Native 默认为 23.0.1). 你可以在 Project_Folder/android/app/build.gradle 中找到默认版本, 然后搜索 buildToolsVersion. 你当然可以从这个文件中更改版本, 或者在 Android Studio 中转到 File > 更改项目 SDK 的项目结构。除非您绝对知道自己在做什么,否则我不建议更改此版本,否则请安装项目正在寻找的 SDK 版本。


P
Pratap Sharma

此答案适用于 MacOs Catalina 个用户或 zsh 个用户,因为您的 Mac 现在使用 zsh 作为默认登录 shell 和交互式 shell。

如果您遵循 React Native Setting up the development environment 指南的文档。然后执行以下操作。

首先检查 local.properties 文件是否存在。如果该文件不存在,则创建并添加以下行。

sdk.dir=/Users/<youcomputername>/Library/Android/sdk

完成上述更改后,现在执行以下操作。

使用代码编辑器打开 ~/.zshrc。就我而言,我使用 vim

vim ~/.zshrc

为路径添加以下行。

export ANDROID_HOME="/Users/<yourcomputername>/Library/Android/sdk"
export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH

确保正确添加上面的行,否则它会给你一个奇怪的错误。

保存更改并关闭编辑器。最后,现在编译您的更改

source ~/.zshrc

我得到这个在我的情况下工作。我希望这可以帮助你。


这对我有帮助……这应该是公认的答案!太感谢了!
h
hoi

您必须编写正确的完整路径。不要使用'~/Library/Android/sdk'

vi ~/.bashrc

export ANDROID_HOME=/Users/{UserName}/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools

source ~/.bashrc

x
xlm

在 Ubuntu 上,您必须将 SDK 与 Android Studio 分开获取奇怪,该路径将适用于 Android Studio,但对于 React Native,您需要创建一个文件名 local.properties

例如 inn ~/AwesomeProject/android 并插入此行:
sdk.dir=/path/to/sdk/in/your/computer


Z
Zaid Qureshi

从您的 react 项目的 android 文件夹中删除 local.properties 并尝试。

我已经做到了并且成功了。


c
currarpickt

签出您的 local.properties 文件:

sdk.dir=C\:\\Users\\USERNAME\\AppData\\Local\\Android\\sdk

格式是否正确


K
Keivan

如果您使用的是 Ubuntu,只需转到您的 react-native 项目的 android 目录并创建一个名为 local.properties 的文件并将 android sdk 路径添加到它,如下所示:

sdk.dir = /home/[YOUR_USERNAME]/Android/Sdk

R
Rathore

复制系统的其他 android 项目 local.properties 并粘贴到 React-native 项目的 android 文件夹中,它将起作用。


为狡猾且防弹的解决方案而赞叹;)
x
xlm

这对我有用。

我正在 Udemy 上学习 Stephen Grider 的 React Native,其中一名学生在第 50 课中发布了此内容。在命令行中逐字粘贴(当然没有“$”)。

$ export "ANDROID_HOME=/usr/local/opt/android-sdk" >~/.bash_profile

不要这样做。这将导致错误 > The SDK directory '/usr/local/opt/android-sdk' does not exist.
c
codebased

我能找到的最佳解决方案如下:

下载您选择的 Android Studio 和 SDK(即使您认为不需要它,请相信我,您需要它来发布 apk 文件和对 android 代码进行一些手动更改)。 File > New > Import ,指向你的 react native android 项目所在的位置。如果它要求您下载任何特定的 SDK,请下载相同的。它可以要求您更新 gradle 等...请在需要的地方继续更新。如果您有一个现有的 Android SDK 并且您知道版本,那么您所要做的就是在您的 android 项目的 build.gradle 下匹配该版本。

这是 gradle 文件的样子:

https://i.stack.imgur.com/DI5FY.png

如果您的机器设置一切顺利,并且您可以使用 Android Studio 编译项目,那么没有什么可以阻止您通过 react-native cli build android 命令构建您的应用程序。

通过这种方法,您不仅可以解决 SDK 的问题,还可以解决许多与 Android 开发的机器设置相关的问题。导入会自动查找 SDK 位置并创建 local.properties。因此,您无需担心人工干预。


Y
Yash Vekaria

对于 Linux 用户

您的应用没有获取 android-sdk 的路径,因此如果您使用的是 linux (ubuntu),则需要添加一个名为“local.properties”的文件并将其保存在 android 文件夹中,该文件夹是在您的应用文件夹中创建的.

您需要在 local.properties 文件中添加以下行,这是您的 android-sdk 的路径位于系统内部的系统中,以便运行应用程序。

sdk.dir=/opt/android-sdk/

保存并重新运行命令 react-native run-android

或者

你可以打开终端,输入

须藤纳米〜/ .bashrc

并将以下路径粘贴到文件末尾

导出 ANDROID_HOME="/opt/android-sdk/"

然后重新启动计算机并再次运行 react-native run-android 。

注意:- 如果您将设置路径放在 .bashrc 文件中,那么您甚至不需要创建 local.properties 文件。


这不应该是硬编码的解决方案,而是取决于 Android Studio SDK 的安装位置。在我的情况下是 sdk.dir="pathWhereAndroidSDKisbeeninstalled/Android/Sdk"
N
Nouman Ghaffar

如果您创建 android studio 项目,您可以看到在项目根目录中创建了一个 local.properties 文件。当您创建一个反应原生项目时,它不会为您创建该文件。所以你必须手动创建它。并且必须向其中添加 skd 目录。因此,在 android 文件夹(在根目录上)中创建一个新文件。并把你的 sdk 路径像这样 sdk.dir=D\:\\Android\\SDK\\android_sdk_studio . 记住:删除单 \ 和双。就像上面一样。


T
Thiyan Arumugam

如果 local.properties 文件丢失,只需在“project/android”文件夹中使用“sdk.dir=/Users/apple/Library/Android/sdk”创建一个,并确保您的 SDK 在该位置。

要在 mac 上创建具有自定义扩展名的文件,请参阅以下链接

How do I save a TextEdit (mac) file with a custom extension (.sas)?


ס
סטנלי גרונן

有2种方法可以解决这个问题:

在 android studio 中简单地运行你的 react native Android 项目,它会自动在 react native Android 项目中生成你的 local.properties 文件。一个。转到 React-native 项目 -> Android b。创建一个文件 local.properties c。打开文件 D.粘贴您的 Android SDK 路径,如下所示


A
Arel

确保您安装了正确的模拟器和 Android 版本。这为我解决了问题。


P
Peter Hassaballah

在您的项目目录中有一个名为“android”的文件夹,其中有 local.properties 文件。删除文件,构建应该会成功运行


S
Sumit Sharma

如果您使用的是 mac,则需要导出您的 sdk 路径。只需将 Macbook 替换为您的系统名称,然后粘贴到终端中。 “临时使用”

导出 ANDROID_HOME=/Users/MacBook/Library/Android/sdk


M
Matt Andruff

Android/ 中创建一个名为 lcoal.properties 的文件并粘贴以下路径。

sdk.dir = /Users/jotnosqh/Library/Android/sdk (for linux)

P
P.Ranjan

有两个 gradle 文件,在 C:\myapp\android\build.gradle 中更改一个,而不是在父目录 myapp 中。

将 23.0.1 替换为您在我的案例 25.0.0 中安装的 Android Build Tool 版本

运行 react-native run-android 以在模拟器中查看您的应用。


J
Jobin

复制系统的其他 android 项目 local.properties 并粘贴到 React-native 项目的 android 文件夹中,它将起作用。

sdk.dir=C\:\\Users\\paul\\AppData\\Local\\Android\\Sdk

C\:\\Users\\champika\\AppData\\Local\\Android\\Sdk
R
Rasoul Miri

只需通过 Android Studio 在项目中打开文件夹 android。 Android Studio 创建必要的文件(local.properties)并下载 SDK 版本以运行所需的 android。