Réaction native – exception java.lang.Runtime: emplacement du SDK introuvable. Définir l’emplacement avec sdk.dir dans le fichier local.properties

Débuter avec React Native. J’ai installé le SDK Android, le SDK Java et les dépendances Android. Je reçois le message d’erreur suivant lors de l’exécution d’une application de démonstration sur mon terminal.

J’ai mon émulateur Galaxy en cours d’exécution:

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

Maintenant je le lance:

 ~ 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$2.call(SpanRecorders.groovy:52) at com.android.builder.profile.ThreadRecorder$1.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 

Système: – OSX Yosemite – noeud v 5.5

Dans Android Studio: Fichier -> Structure du projet -> Emplacement du SDK Android

Copier le chemin du SDK Android entrez la description de l'image ici

  1. Dans votre nom_projet -> Android -> Créer un fichier local.properties
  2. Ouvrez local.properties.
  3. Écrivez sdk.dir = / Utilisateurs / Ashok / Bibliothèque / Android / sdk
  4. Sauvegarde le.
  5. à partir du répertoire racine de votre projet, react-native run-android .

Voici comment créer un fonctionnement natif de la réaction avec Android sous Mac OSX:

  1. Téléchargez android studio et mettez à jour Android sdk via celui-ci, https://developer.android.com/studio/index.html#downloads.
  2. Ajouter PATH dans le .base_profile export ANDROID_HOME=/Users/UserName/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

  3. Placez le fichier local.properties dossier project_name/android/ .

  4. Modifiez le local.properties puis ajoutez-y sdk.dir=/Users/UserName/Library/Android/sdk .

  5. Exécutez la commande android pour mettre à jour les packages requirejs. Pour la RN 0.32, ses

    • outils / outils de compilation SDK 23.0.1
    • Android 6.0 (API 23)
    • Extras
    • Bibliothèque de support Android
  6. Exécutez la commande android studio ou android avd pour ouvrir un émulateur.

  7. ne react-native run-android
  8. une fois que vous avez vu l’écran rouge de l’application dans Android, ne react-native start à react-native start pour déclencher le serveur de pont

Si vous utilisez Android Studio, suivez les étapes ci-dessous.

  • Allez dans Fichier> Structure du projet>
  • Dans l’emplacement du SDK, ajoutez «chemin d’emplacement» et réessayez.

Sous Linux sans android studio:

Premières vérifications: Vous avez déjà téléchargé et décompressé le SDK Android et exécuté la commande Android pour installer un SDK de développement réel?

Toujours pas trouvé lors de la construction et en cours d’exécution. Ensuite, le problème peut être que le fichier local.properties doit se trouver dans le même répertoire que Gradile pour que Gradle le trouve lors de la création et de l’exécution de adb.

Pour utiliser un projet, j’avais besoin de placer le fichier local.properties dans le dossier Myprojectname / android / et tout a commencé à fonctionner.

Comme j’ai décompressé le SDK pour télécharger mon chemin dans le fichier est la suivante: sdk.dir = / home / USER / Téléchargements / android-sdk-linux

Ajouter le chemin de studio android à votre variable d’environnement

 nano ~/.bash_profile 

Ajouter les lignes ci-dessous:

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