Il y a quelque temps, j'ai supprimé le répertoire/ios de mon application native (appelons-le X). Je développe et teste à l'aide de l'émulateur Android, mais j'aimerais maintenant m'assurer qu'il fonctionne sous ios avec un simulateur xcode, etc.
Donc, mon idée actuelle est de créer un nouveau projet nu natif de réaction (appelons-le Y) avec un dossier ios, puis suivez ces étapes pour renommer Y de sorte qu'il porte le nom de X, puis déplacez le/répertoire ios de Y dans X et en essayant de run-ios
.
Je vais mettre à jour ici comment ça se passe, mais je me suis demandé s'il y avait une meilleure façon et si personne n'avait été dans cette situation auparavant?
J'ai cherché dans beaucoup de choses 'régénérer le dossier ios' ', supprimer le dossier ios' 'ajouter le dossier ios au fichier existant ..' et rien de bien. Peut-être que mon googlefu n'est pas assez bon mais si quelqu'un a des suggestions, très apprécié.
L’étape 2 s’assurera que les compilations sont compilées, mais pour l’instant, mon objectif est de récupérer le dossier/ios dans le projet et de permettre à React Native de se rendre compte de son existence la configuration nécessaire).
Merci
Le processus à suivre est très similaire à celui de renommer une application native rea. En gros, il vous suffit d’exécuter react-native upgrade
dans le répertoire de votre projet racine. Pour plus d'informations, vous pouvez vérifier une autre question ici . Les instructions ci-dessous expliquent comment créer un autre projet natif de réaction basé sur un projet copié portant un nouveau nom.
index.ios/Android.js
qui est donné en paramètre à AppRegistry.package.json
/ios
et /Android
de votre ancienne application.$react-native upgrade
pour générer à nouveau les dossiers /ios
et /Android
.$react-native link
pour toute dépendance native.$react-native run-ios
ou tout ce que vous voulez.Supprimez/supprimez simplement Android et ios (conserver la sauvegarde Android et le dossier ios) et exécutez la commande suivante:
react-native eject
Supported version :
react-native <= 0.59.10
react-native-cli <= 1.3.0
react-native upgrade --legacy true
Supported version :
react-native >= 0.59.10
react-native-cli >= 1.3.0
Réf: lien
Remarque à partir de la version 0.60.x de react-native, vous pouvez utiliser les éléments suivants pour régénérer les répertoires ios/Android:
react-native upgrade --legacy true
Crédit ici: https://github.com/facebook/react-native/issues/25526
C’est trop tard, mais pour tous ceux qui ont toujours le même problème et qui ont une application native indépendante, ce que j’ai fait pour moi, j’ai lancé exp detach sur mon application individuelle et il a créé un dossier ios!
Comme @Alok l'a mentionné dans les commentaires, vous pouvez utiliser react-native eject
pour générer les dossiers ios
et Android
. Mais vous aurez d'abord besoin d'un app.json
dans votre projet.
{"name": "example", "displayName": "Example"}
Étant donné que l’éjection de react-native est dépréciée dans la version 60.3 et que des erreurs diff apparaissent lors de la mise à niveau du formulaire 60.1 vers la version 60.3, la régénération du dossier Android ne fonctionnait pas.
J'ai dû
rm -R node_modules
Mettez ensuite à jour le fichier react-native dans package.json vers 59.1 (supprimez package-lock.json).
Courir
npm install
react-native eject
Cela régénérera vos dossiers Android et ios. Enfin, passez à la version 60.3.
react-native upgrade
la mise à niveau native en retour à l'arrière et 59.1 n'ayant pas régénéré mon dossier Android, l'éjection était donc nécessaire.
Je viens de me retrouver avec ce problème aussi, mais je viens de le résoudre.
Lors de l'exécution de la commande "react-native upgrade", il leur a bien indiqué qu'il n'était pas nécessaire de mettre à jour ou avec la commande "react-native eject" que la commande n'était pas reconnue.
mise à niveau native
Vous devez maintenant utiliser la commande "react-native upgrade --legacy true" pour sauvegarder vos dossiers Android ou ios, selon le cas, car cette commande remplacera vos fichiers.
réactif, mise à niveau native --legacy true
Maintenant, il vous dit simplement de ne pas remplacer votre package.json