React Native - java.lang.RuntimeException:未找到 SDK 位置。在 local.properties 中使用 sdk.dir 定义位置

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35141951/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 23:47:36  来源:igfitidea点击:

React Native - java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties

javaandroidreact-native

提问by Beast_Code

Getting started with React Native. I did install the Android SDK, Java SDK, and Android dependencies. I receive the following error when running a demo app on my terminal.

开始使用 React Native。我确实安装了 Android SDK、Java SDK 和 Android 依赖项。在我的终端上运行演示应用程序时,我收到以下错误。

I do have my Galaxy Emulator running:

我的 Galaxy 模拟器正在运行:

~ emulator @galaxy
HAXM is working and emulator runs in fast virt mode
emulator: UpdateChecker: skipped version check

Now I run it:

现在我运行它:

~ react-native run-android
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
    at com.android.build.gradle.internal.SdkHandler.getAndCheckSdkFolder(SdkHandler.java:102)
    at com.android.build.gradle.internal.SdkHandler.getSdkLoader(SdkHandler.java:112)
    at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:86)
    at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.groovy:507)
    at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.groovy:455)
    at com.android.build.gradle.BasePlugin$_createTasks_closure13_closure17.doCall(BasePlugin.groovy:415)
    at com.android.build.gradle.BasePlugin$_createTasks_closure13_closure17.doCall(BasePlugin.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at com.android.build.gradle.internal.profile.SpanRecorders.call(SpanRecorders.groovy:52)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
    at com.android.build.gradle.internal.profile.SpanRecorders.record(SpanRecorders.groovy:54)
    at com.android.build.gradle.BasePlugin$_createTasks_closure13.doCall(BasePlugin.groovy:414)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:292)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1015)
    at groovy.lang.Closure.call(Closure.java:423)
    at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
    at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:87)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:31)
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy11.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:61)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:487)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:85)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:90)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:50)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:27)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:40)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:169)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/jonathanbello/Documents/Personal-Projects/Javascript/React-Native/WeatherApp/android/app/build.gradle' line: 102

* 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.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug                                                                             option to get more log output.

BUILD FAILED

Total time: 7.565 secs
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html

System: - OSX Yosemite - node v 5.5

系统: - OSX Yosemite - node v 5.5

回答by Ashok R

In Android Studio: File ->Project Structure -> Android SDK Location

在 Android Studio 中:文件 -> 项目结构 -> Android SDK 位置

Copy Android SDK Path enter image description here

复制 Android SDK 路径 在此处输入图片说明

  1. In Your Project_Name -> Android -> Create a File local.properties
  2. Open local.properties.
  3. Write sdk.dir=/Users/Ashok/Library/Android/sdk
  4. Save it.
  5. from your project root directory react-native run-android.
  1. 在您的 Project_Name -> Android -> 创建文件 local.properties
  2. 打开 local.properties。
  3. 写入 sdk.dir=/Users/Ashok/Library/Android/sdk
  4. 保存。
  5. 从您的项目根目录react-native run-android

回答by gasolin

Here's how I make react-native work with Android at Mac OSX:

以下是我如何在 Mac OSX 上使用 Android 进行 react-native 工作:

  1. Download android studio and update android sdk via it, https://developer.android.com/studio/index.html#downloads
  2. Add PATH in .base_profileexport ANDROID_HOME=/Users/UserName/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

  3. Put the local.propertiesfile inside of project_name/android/folder.

  4. Edit local.propertiesthen add sdk.dir=/Users/UserName/Library/Android/sdkin it.

  5. Run androidcommand to update required packages. For RN 0.32, its

    • tools/sdk build tools 23.0.1
    • Android 6.0(API 23)
    • Extras
    • Android Support Library
  6. Run android studio or android avdcommand to open a emulator

  7. do react-native run-android
  8. once you seen app's red screen in android, do react-native startto trigger the bridge server
  1. 下载android studio并通过它更新android sdk, https://developer.android.com/studio/index.html#downloads
  2. 添加路径 .base_profileexport ANDROID_HOME=/Users/UserName/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

  3. local.properties文件放在project_name/android/文件夹中。

  4. 编辑local.properties然后添加sdk.dir=/Users/UserName/Library/Android/sdk进去。

  5. 运行android命令以更新所需的包。对于 RN 0.32,其

    • 工具/sdk 构建工具 23.0.1
    • 安卓 6.0(API 23)
    • 附加功能
    • 安卓支持库
  6. 运行android studio或android avd命令打开模拟器

  7. react-native run-android
  8. 一旦您在android中看到应用程序的红屏,请react-native start触发桥接服务器

回答by sridhar..

Add android studio path to your environment variable

将 android studio 路径添加到您的环境变量中

nano ~/.bash_profile 

Add below lines:

添加以下几行:

 export ANDROID_HOME=/YOUR_PATH_TO/android-sdk
 export PATH=$ANDROID_HOME/platform-tools:$PATH
 export PATH=$ANDROID_HOME/tools:$PATH

回答by AAnkit

If you are using Android Studio, follow below steps.

如果您使用的是 Android Studio,请按照以下步骤操作。

  • Go to File > Project structure >
  • In SDK Location tab add "location path" and try again.
  • 转到文件 > 项目结构 >
  • 在 SDK 位置选项卡中添加“位置路径”并重试。

回答by Mika

In Linux without android studio:

在没有 android studio 的 Linux 中:

First checks: You have already downloaded and unzipped the android SDK and ran the android command to install an actual development SDK?

首先检查:您是否已经下载并解压了 android SDK 并运行了 android 命令来安装实际的开发 SDK?

Still its not found when building and running. Then the problem might be that the file local.properties needs to be inside the same directory as gradle stuff for gradle to find it when building and running adb.

在构建和运行时仍然没有找到。那么问题可能是文件 local.properties 需要与 gradle 东西位于同一目录中,以便 gradle 在构建和运行 adb 时找到它。

For my project using I needed to put the local.properties file to Myprojectname/android/ folder and it started to work.

对于我使用的项目,我需要将 local.properties 文件放入 Myprojectname/android/ 文件夹,然后它开始工作。

As I had unzipped the SDK to Downloads my path in the file is this: sdk.dir=/home/USER/Downloads/android-sdk-linux

由于我已解压缩 SDK 以下载我在文件中的路径是这样的:sdk.dir=/home/USER/Downloads/android-sdk-linux