React native: projet Android introuvable. Peut-être exécuter d'abord Android natif de réaction?


89

J'ai eu un problème dans mon projet React-Native qui fonctionnait bien plus tôt mais qui a soudainement cessé de fonctionner. Chaque fois que j'ai utilisé la commande:

react-native run-android

J'obtenais une erreur :

Projet Android introuvable. Peut-être exécuter d'abord Android natif de réaction?

J'ai essayé de courir:

react-native android

Mais il a dit:

Unrecognized command 'android' Run react-native --help to see list of all available commands

Après avoir essayé:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native eject

L'erreur renvoyée était:

Analyse des dossiers pour les liens symboliques dans D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms) L'application namedoit être définie dans le app.jsonfichier de configuration pour définir le nom du projet. Il ne doit contenir ni espaces ni tirets.

Voici le fichier app.json:

{
  "expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

1
si le dossier android est manquant dans la directive racine, exécutez l'éjection native de réaction.
Khurshid Ansari

1
@Khurshid Ansari votre solution n'a pas fonctionné, car l'erreur arrive: "Le nom de l'application doit être défini dans le fichier de configuration app.json pour définir le nom du projet" même lorsque le nom est défini. Veuillez consulter la question mise à jour.
Abhinav Saxena

Réponses:


155

J'ai soulevé cette question et je me suis répondu car je pensais que cela aiderait d'autres personnes confrontées à un problème similaire. J'ai eu beaucoup de mal à découvrir la vraie raison derrière cela car l'erreur affichée dans le terminal n'était pas précise.

Pour résoudre le problème, veuillez mettre à niveau le package react-native.

  1. Accédez à la racine du projet .

  2. Mettez à niveau le package natif React dans l' invite de commandes en tapant:

    react-native upgrade.

  3. Acceptez ensuite de mettre à jour tous les fichiers en tapant y (Yes)dans l' invite de commande .

Référence: https://github.com/facebook/react-native/issues/9312


9
Sauvé la journée :)
Muhammad

où se trouve le package natif React? s'il vous plaît faire des étapes claires
Lutaaya Huzaifah Idris

@LutaayaHuzaifahIdris Comme mentionné dans la réponse, le package natif react peut être mis à niveau à la racine du projet. Alors, ouvrez l'invite de commande et accédez à la racine du projet. Mettez ensuite à niveau le package natif react.
udai

il est mis à jour react-native dont je ne voulais pas.
Khurshid Ansari

Ma solution de travail est ci-dessous, aucune des solutions ci-dessus n'a fonctionné pour moi: 1. Ouvrez le gestionnaire AVD dans Android Studio et exécutez un appareil virtuel (vous pouvez fermer AS par la suite) 2. CMD dans votre dossier de projet et tapez «expo start» 3. Une fois que l'Expo a commencé, choisissez l'option 2 qui est "Appuyez sur un émulateur pour Android". Il installera expo sur l'appareil virtuel et vous pourrez tester à partir de là
Paul Gwamanda

23

Je sais que c'est une vieille question, mais aucune de ces solutions n'a fonctionné pour moi et peut-être qu'il y en a d'autres comme moi. J'ai résolu mon problème en exécutant cette commande avantrun-android

react-native eject

1
pour une raison quelconque, cela a fait l'affaire pour moi aussi, j'ai essayé la nouvelle version de la mise à jour native de react en utilisant "react-native-git-upgrade" comme suggéré lorsque vous exécutez "react-native upgrade" cela ne fonctionnait pas pour moi.
Zaid Qureshi

2
cette commande recrée un dossier android et ios dans votre projet
Khurshid Ansari

1
Je pense que c'est la bonne réponse. Non seulement parce que cela a fonctionné pour moi, mais parce que d'après ma compréhension de la documentation, c'est la manière prévue de le faire et donc sans autres effets secondaires.
Daan

8
La ejectcommande a été supprimée de react-native.
Phantom Watson

17

Ouvrez votre répertoire racine de projet natif React et localisez android -> app -> build -> intermédiaires -> signature_config -> debug -> out -> signature-config.json. supprimer signature-config.json ce fichier réessayer

Ou

1) Parfois, si nous avons une ancienne version de react native et que certains des packages nouvellement installés ne prennent pas en charge l'ancienne version. Ensuite, vous devez mettre à jour le projet natif react à l'aide de la commande de mise à niveau react-native.

  1. Après avoir mis à jour le projet actuel vers la nouvelle version, cette erreur devrait être résolue.

9

Assurez-vous de démarrer le projet en utilisant la commande (non-expo):

react-native init <your-project-name>

Si dossier existant, suivez:

éjection native de réaction


Dans la dernière version de react-native, cette suggestion survient lorsque vous essayez d'émettre la commande:

react-native eject

Analyse des dossiers pour les liens symboliques dans D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms) L'application namedoit être définie dans le app.jsonfichier de configuration pour définir le nom du projet. Il ne doit contenir ni espaces ni tirets.

Maintenant, lorsque vous émettez la commande suivante:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native upgrade

Ce qui suit apparaît:

Analyse des dossiers pour les liens symboliques dans D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (56ms) Vous devriez envisager d'utiliser le nouvel outil de mise à niveau basé sur Git. Il facilite les mises à niveau en résolvant automatiquement la plupart des conflits. Pour l'utiliser: - Revenez à l'ancienne version de React Native - Exécutez "npm install -g react-native-git-upgrade" - Exécutez "react-native-git-upgrade" Voir https://facebook.github.io /react-native/docs/upgrading.html La version react -native dans "package.json" ne correspond pas à la version installée dans "node_modules". Essayez d'exécuter "npm install" pour résoudre ce problème. Abandon.

Dans les suggestions de commandes natives de Facebook, il existe une solution claire.

Ces commandes vérifient la version actuelle et si une mise à jour est nécessaire ou non.

Encore une solution:

react-native: commande run-androidnon reconnue. Peut-être causé par l'installation de npm

Veuillez également consulter:

Solution à "Expo: impossible de trouver un module LogReporter"


Réponse acceptée pour moi, +10 rep. à @Abhinav
Saeed

8

J'ai fait comme ça ... A travaillé !!

  1. Dans la racine du projet CMD, exécutez la mise à niveau native de réaction .
  2. si vous rencontrez toujours des problèmes, assurez- vous que vous avez react-native dans les dépendances json dans package.json , ajoutez-le sinon
  3. si vous rencontrez toujours des problèmes, obtenez la version de react native dans cmd en utilisant react-native -v et vérifiez si la valeur renvoyée dans cmd et package.json est la même. mettre à jour le package.json avec la valeur retournée dans cmd

Ici, mon problème est résolu.


5

Ouvrez l'invite de commande en tant qu'administrateur et accédez au dossier du projet, exécutez Android (npx react-native run-android)


3

Nous avons eu ce problème car les fichiers du dossier android gradlew et gradlew.bat (script de démarrage Gradle pour UN * X, Windows respectivement) sont entrés d'une manière ou d'une autre dans le fichier global .gitignore, et n'ont donc pas été présentés sur les environnements locaux.

En fait, l'exécution de la commande de mise à niveau react-native restaure ces fichiers, résolvant ainsi le problème.


3

En complément, dans le cas où la commande react-native n'est pas trouvée, vous devez installer la CLI react-native:

npm install -g react-native-cli

Ensuite, vous pouvez suivre les étapes décrites ci-dessus.

Plus de détails: react-native: commande introuvable


2

Si vous avez commencé votre projet en suivant

npm install -g create-react-native-app
create-react-native-app MyReactNative
npm install -g react-native-cli
npm start

après cela, vous pouvez faire face au problème mentionné ci-dessus en question.La solution est donc:

npm run eject

2

Supprimez le fichier: React Native Project Root Directory et localisez android -> app -> build -> intermédiaires -> signature_config -> debug -> out -> signature-config.json.


2

J'ai été confronté à ce problème aujourd'hui, et aucune des solutions n'a fonctionné pour moi, alors j'en ai trouvé une autre.

AndroidManifest.xml mal formaté causera ce problème , peut-être avez-vous défini l'écran de démarrage comme moi aujourd'hui et n'avez pas formaté AndroidManifest de la bonne manière


1

Ici, app.json n'a pas de nom, mais il a une configuration liée à l'expo. Ajoutez simplement les champs de nom et de nom d'affichage dans app.json.

app.json (deux premières lignes):

{
"name": "AwesomeProject",
"displayName": "Awesome Project",
"expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

Après cela, exécutez simplement:

$ react-native eject

info Génération du dossier iOS.

info Génération du dossier Android.

Pas besoin de faire une mise à niveau native de réaction.


en fait, "expo eject" fonctionne également mieux. Il m'a donné des options et mis à jour app.json et créé des répertoires android / ios.
hp2017

1

L'exécution de Terminal en tant qu'administrateur sous Windows a fait l'affaire pour moi ... D'autres solutions n'ont pas fonctionné.


Ce n'est que dire grâce à la réponse existante de Karthik Mano, n'est-ce pas? Si ce n'est pas le cas, veuillez préciser les informations supplémentaires que cette réponse fournit.
Yunnosch

1

J'utilise Android Studio (non-expo) et cela fonctionne pour moi

react-native init <your-project-name>

1

Vous devez exécuter votre cmd avec les privilèges d'administrateur. Cela a résolu le même problème pour moi. N'a pas fait "éjecter" ou quoi que ce soit d'autre.


Il y a beaucoup de réponses similaires disponibles pour la même question. Au lieu d'ajouter votre réponse, vous pouvez simplement voter pour la réponse existante si cela vous a aidé.
Deepak Terse

1

Ouvrez votre répertoire racine de projet natif React et localisez android -> app -> build -> intermédiaires -> signature_config -> debug -> out -> signature-config.json

Supprimez le fichier et réessayez.



0

Ma solution de travail est ci-dessous, aucune de ces solutions n'a fonctionné pour moi:

CD dans votre dossier de projet et tapez expo start --android.

Ou le long chemin:

  1. Ouvrez le gestionnaire AVD dans Android Studio et exécutez un appareil virtuel (vous pouvez fermer AS par la suite)
  2. CMD dans votre dossier de projet et tapez 'expo start'
  3. Une fois que l'Expo a commencé, choisissez l'option 2 qui est "Appuyez sur a pour l'émulateur Android"

Il installera expo sur l'appareil virtuel et vous pourrez tester à partir de là


0

Quand j'ai couru react-native eject, j'ai eu cette erreur:

Both the iOS and Android folders already exist! Please delete `ios` and/or `android` before ejecting.
  • Supprimez le MyProject/androiddossier.
  • Exécuter react-native ejectCela a généré le androiddossier

  • Ensuite, exécutez react-native run-androidpour construire Android



0

Si vous avez créé votre projet avec la expocommande, comme expo init projectname, vous devez ensuite éjecter votre projet:

expo eject

Si vous avez créé votre projet d'ici react-native init projectNamelà, vous devez utiliser

react-native eject

La commande d'éjection a été supprimée de react
Michimcchicken

0

Peut-être qu'il est trop tard, j'ai remplacé le Androiddossier d'un fichier de sauvegarde. Cela a fonctionné pour moi.


0

J'ai résolu le problème en tuant tous les cas de java.exe avec: taskkill /f /im java.exe.


0

J'ai eu la même erreur dans un projet (créé avec React Native CLI):

entrez la description de l'image ici

il s'avère que j'ai eu une erreur de syntaxe dans mon fichier manifeste Android (android / app / src / main / AndroidManifest.xml).


0

Dans mon cas, j'ai oublié d'ajouter Sudo. Fixé comme suit,

sudo npx react-native run-android

0

Supprimez signature-config.json ensuite essayez à nouveau react -native run-android

Chemin du fichier signature-config.json: android -> app -> build -> intermédiaires -> signature_config -> debug -> out -> signature-config.json


0

Je pense qu'une autre chose simple que vous auriez pu vérifier, c'est si vous exécutiez auparavant le projet en tant que rôle différent d'un utilisateur, comme dans Windows si vous exécutiez précédemment le React-native run-android avec un rôle d'administrateur.


0

Supprimer React Native Android build folder, puis réessayer la commandenpx react-native run-android


0

Dans mon cas, je n'avais pas les bonnes autorisations pour mon dossier de projet.

Si tel est votre cas, cliquez simplement avec le bouton droit sur le dossier> Propriétés> Sécurité> Avancé puis changez la propriété du dossier à votre utilisateur, y compris les sous-dossiers. Ça devrait le faire

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.