run-ios --buildFolder installs the app from the default DerivedData instead of the build folder
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- react-native, typescript
- Domaine
- cli, mobile-dev
Piste de recherche
Start with packages/cli-platform-apple/src/commands/buildCommand/buildProject.ts and packages/cli-platform-apple/src/commands/runCommand/getBuildSettings.ts, then trace how runOnSimulator.ts, runOnDevice.ts and createRun.ts pass build options. Check how -showBuildSettings resolves TARGET_BUILD_DIR when --buildFolder is set. Done means the run paths install or open the app from that build folder; the issue names no tests.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Environment
System:
OS: macOS 27.0.1
Binaries:
Node: 24.18.0
pnpm: 11
IDEs:
Xcode: 27.0/27A266a
npmPackages:
"@react-native-community/cli-platform-apple": 20.2.0
react-native: 0.85
The bug does not depend on the Xcode version; the relevant code is unchanged on main (21.0.0-alpha.1).
Description
run-ios --buildFolder <dir> builds into <dir> but installs the app from Xcode's default DerivedData.
buildProject passes the folder to the build as -derivedDataPath <dir>. After the build, installApp resolves the app through getBuildSettings, which runs xcodebuild … -showBuildSettings -json without -derivedDataPath. TARGET_BUILD_DIR therefore points into ~/Library/Developer/Xcode/DerivedData/<Project>-<hash>/… and not into <dir>. As a result:
-
If the default DerivedData holds an older build of the project (for example from an Xcode IDE build), the CLI installs and launches that stale
.appwithout any warning. -
If it holds no build, the command fails after
success Successfully built the app:UnhandledPromiseRejection: … The promise rejected with the reason "Error: target build directory /Users/…/Library/Developer/Xcode/DerivedData/<Project>-<hash>/Build/Products/Debug-iphonesimulator does not exist".
The same applies to runOnDevice (physical device and Mac Catalyst) and to openApp (macOS), because they all go through getBuildSettings.
--binary-path does not work around this: it skips the build and passes buildOutput: '', so getBuildSettings throws on getPlatformName('') (#2517).
Code references on main:
packages/cli-platform-apple/src/commands/buildCommand/buildProject.tsadds-derivedDataPathfromargs.buildFolder.packages/cli-platform-apple/src/commands/runCommand/getBuildSettings.tsbuilds the-showBuildSettingscall without it.runOnSimulator.ts,runOnDevice.tsandcreateRun.ts(macOS) do not passargs.buildFoldertoinstallApp/openApp/getBuildSettings.
Related: createRun calls process.chdir(sourceDir) (the ios/ directory) before building, so a relative --buildFolder resolves against ios/ and not the project root. The option description does not say which directory it is relative to.
Proposed fix: thread buildFolder from the run paths into getBuildSettings and append -derivedDataPath <buildFolder> to the -showBuildSettings call when it is set. I applied this as a local patch on 20.2.0: run-ios --buildFolder build/DerivedData then installs and launches the freshly built app from ios/build/DerivedData/Build/Products/Debug-iphonesimulator/. PR to follow.
Reproducible Demo
- In any React Native project, make sure the default DerivedData has no build for it:
rm -rf ~/Library/Developer/Xcode/DerivedData/<Project>-*. - Run
npx react-native run-ios --buildFolder build/DerivedData. - The build succeeds into
ios/build/DerivedData, then the CLI fails withtarget build directory …/Library/Developer/Xcode/DerivedData/<Project>-<hash>/Build/Products/Debug-iphonesimulator does not exist.
Expected: the CLI installs and launches the app it just built in ios/build/DerivedData.
- Langage dominant
- TypeScript
- Étoiles
- 2.9k
- Forks
- 951
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de react-native-community/cli
-
run-ios --udid <physical device> throws "No simulator available" because the fallback simulator is resolved eagerlyPeut-être pris @huytdps13400 l’a pris il y a 54 jours. Ouvertebug report
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
react-native-community/cli#2826 ·
Les mainteneurs répondent en général sous 2 jours
-
`project.ios.automaticPodsInstallation` default of `true` never applies unless `project.ios` is explicitly declared in `react-native.config.js`Peut-être pris @huytdps13400 l’a pris il y a 54 jours. Ouvertebug report
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
react-native-community/cli#2825 ·
Les mainteneurs répondent en général sous 2 jours
-
run-ios: "Unable to boot device in current state: Booted" alert when the simulator is already bootedPeut-être pris @bryandent l’a pris il y a 97 jours. Ouvertestale
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
react-native-community/cli#2820 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
run-ios on Xcode 27: DeviceHub opens no window when the simulator is shut downPeut-être pris @rakodev l’a pris il y a 14 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
react-native-community/cli#2866 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Tons of errors are ignoredPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
react-native-community/cli#2852 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de react-native-community/cli
Issues similaires
-
Add: Tequila Music TV RO SDOuvertecheck:passed streams:add
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
iptv-org/iptv#55821 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
vercel-labs/wterm#246 ·
Les mainteneurs répondent en général sous 1 jour
-
bug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
nearform/lastlight#452 · 1 commentaire · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
fix(console): include PARTITIONED BY in generated table DDLPeut-être pris @aubdiy l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/polaris-tools#291 ·
Les mainteneurs répondent en général sous 6 jours