BUG - addTargetDependency - If project doesn't contain PBXTargetDependency or PBXContainerItemProxy
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- ios, javascript, nodejs
Línea de trabajo
Empieza en lib/pbxProject.js, en addTargetDependency, y revisa la suite de pruebas existente para comprobar la cobertura de addTarget o addTargetDependency. Reproduce el caso de un .xcodeproj de un solo Target sin PBXTargetDependency ni PBXContainerItemProxy y añade después una prueba de regresión. La tarea estará terminada cuando las dependencias se creen o procesen correctamente y las pruebas existentes sigan pasando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
One Line Summary
addTargetDependency misses some dependency links if PBXTargetDependency or PBXContainerItemProxy are not present.
Affected Projects
Calls made to addTarget or addTargetDependency with any .xcodeproj that only has one target, these do NOT have PBXTargetDependency or PBXContainerItemProxy.
Details
The root cause
The following if statement in the addTargetDependency function skips the dependencies and other steps if it is missing.
https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L860
Possible fixes
Option 1 - Smallest number changes
A simple way to fix this would be to use short-circuit evaluation where these vars are assigned to handle null, undefined, or if no key exists when reading from hash.project.objects.
https://github.com/apache/cordova-node-xcode/blob/8b98cabc5978359db88dc9ff2d4c015cba40f150/lib/pbxProject.js#L834-L835
This could become the following to fix this issue:
pbxTargetDependencySection = this.hash.project.objects[pbxTargetDependency] || {},
pbxContainerItemProxySection = this.hash.project.objects[pbxContainerItemProxy] || {};
I have tested this on some projects on my machine and was able to successfully run an App Extension on an iOS device to confirm the solution works.
Option 2 - Larger Refactor - Fix some clean up
Same fix as option 1, but clean up the hard coded strings.
- Put these at the top of the file:
const PBX_TARGET_DEPENDECY = "PBXTargetDependency";
const PBX_CONTAINER_ITEM_PROXY = "PBXContainerItemProxy";
- Use them here and remove the old vars:
const pbxTargetDependencySection = this.hash.project.objects[PBXTargetDependency] || {};
const pbxContainerItemProxySection = this.hash.project.objects[PBXContainerItemProxy] || {};
Workaround
// Add code anytime before calling addTarget or addTargetDependency
const projObjects = xcodeProject.hash.project.objects;
projObjects['PBXTargetDependency'] = projObjects['PBXTargetDependency'] || {};
projObjects['PBXContainerItemProxy'] = projObjects['PBXTargetDependency'] || {};
Related issues
PR #12 also made a note of this issue:
2.
addTargetDependency()is indirectly called as well fromproj.addTarget('AppExtension', 'app_extension'). In my project,PBXTargetDependencyandPBXContainerItemProxysections did not yet exist which results in the necessary dependencies not being set up properly for building the extension with the main app. Create these sections if they do not exist.
They attempted to fix this in a similar way I am suggesting with commit 2e09d78efdb1d667dd513a3c97c46dc448305f5f.
This PR was not merged however, so this is still an active issue.
There is another issue #37, that references PR #12, notes that targetDependency is still an issue.
Submitting a PR - Is this an active library?
It has been over a year since there has been a release or even a commit. If the maintainers could chime in I'd be happy to create one.
I have read the CONTRIBUTING.md guide, is there any more to it than that? I see there is a good number of tests, I'll make sure to add one to cover the code change. Lastly let me know which of the possible fixes you prefer or if you have another idea.
- Lenguaje dominante
- JavaScript
- Estrellas
- 217
- Forks
- 102
- Merge medio
- 2 d 9 h
- PR fusionados (30 d)
- 8
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/cordova-node-xcode
-
Add & Improve JSDocs Abiertoenhancement
apache/cordova-node-xcode#171 · 1 asignado ·
-
🔖 New release Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
apache/cordova-node-xcode#162 · 4 comentarios · 2 reacciones ·
-
Install .xcframework Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 28/100
apache/cordova-node-xcode#139 · 2 comentarios ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
apache/cordova-node-xcode#138 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/cordova-node-xcode#137 · 2 reacciones ·
Todos los issues de apache/cordova-node-xcode
Issues similares
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Improve Title Support Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·