apache / apache/cordova-node-xcode

pbxProject.prototype.addFramework: automatically create Frameworks Group if it does not exist

Offen
#28 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
JavaScript
Sterne
217
Forks
102
Ø Merge
2 T. 3 Std.
Gemergte PRs (30 T.)
6

Beschreibung

**This is a feature proposal**

**Initial Situation**:

Your xcode project tree looks like this:
bildschirmfoto 2018-12-09 um 22 28 11

You have a Xcode project without a `Framworks` group and you want to add a new framework using `pbxProject.prototype.addFramework`.

**Current behaviour**:

The `Frameworks` group is created but not added to the `mainGroup` of the project which references all files (that are not part of a subgroup) and all groups (that are no subgroups).

If you open the updated xcode project with xcode you see the following:

bildschirmfoto 2018-12-09 um 22 15 28

This is because xcode cannot find a reference to the `Frameworks` group on the `mainGroup` and therefore "autofixes" the project by adding the library added with `pbxProject.prototype.addFramework` to a newly generated group `Recovered References`.

**Expected behaviour**:

The `Framework` group is created and also automatically added to the `mainGroup`.

When you open the project in xcode it should look like this:

bildschirmfoto 2018-12-09 um 22 23 26

**Current workaround:**

Add the `Frameworks` group to `mainGroup`manually:

```js
const project = xcode.project(projectPath);
project.parseSync();

project.addFramework(path.resolve(frameworksDirectory, 'GoogleInterchangeUtilities.framework'), {
customFramework: true,
embed: true,
link: true,
});

const mainProject = project.getPBXGroupByKey(project.getFirstProject().firstProject.mainGroup);
if (!mainProject.children.some(children => children.comment === 'Frameworks')) {
const [groupKey] = Object.entries(project.hash.project.objects['PBXGroup']).find(
([, group]) => group.name === 'Frameworks',
);
project.addToPbxGroup(groupKey, project.getFirstProject().firstProject.mainGroup);
}
```

If you are okay with this feature proposal I would love to implement it!

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne bei pbxProject.prototype.addFramework und verfolge, wie die Frameworks-Gruppe und project mainGroup behandelt werden. Verwende den Workaround des Issues als Verhaltensreferenz. Als abgeschlossen gilt die Änderung, wenn eine fehlende Frameworks-Gruppe sowohl erstellt als auch von mainGroup referenziert wird, sodass Xcode das Framework nicht in Recovered References platziert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
ios, javascript, nodejs
Bereich
mobile
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.