Verwenden statischer Bibliotheks- und Bundle-Produkte aus dem Xcode 4-Teilprojekt
-
28-10-2019 - |
Frage
Ich habe einen Arbeitsbereich mit 2 Projekten:
- Ein Projekt mit zwei Produkten: einer statischen Bibliothek und einem Ressourcenpaket
- Ein Projekt, das eine iOS-App erstellt.
Das erste Projekt wurde als Teilprojektreferenz unter dem zweiten Projekt hinzugefügt. Ich habe die statische Bibliothek gut gebaut, sie ist mit der App verbunden, alles ist gut. Ich kann das Ressourcenpaket jedoch nicht in die App aufnehmen.
Das Bundle wurde dem Build-Schema der App hinzugefügt.
Ich habe versucht, das Resources.bundle in die Phase "Build Resources" der App zu ziehen, aber dies führt zu diesem Fehler beim Erstellen:
.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle: No such file or directory
Also habe ich mir das abgeleitete Datenverzeichnis angesehen und sehe Resources.bundle in
MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug
nicht
MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator.
Ich gehe davon aus, dass das Bundle nicht plattformspezifisch ist. Daher habe ich versucht, eine Erstellungsphase hinzuzufügen, um das Bundle in das Produktverzeichnis zu kopieren. Daraus resultiert dieser Buildfehler:
.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle depends on itself. This target might include its own product.
Es gibt jedoch keine Debug-iphonesimulator / Resources.bundle-Datei, sodass ich nicht sehe, woher diese Abhängigkeit stammt. Jeder Rat wäre sehr dankbar.
Lösung
Ich habe es herausgefunden.Das Problem ist (wie oben erwähnt), dass das Bundle nicht plattformspezifisch ist und daher in das Verzeichnis Products / Debug ausgegeben wird, während die App in das Verzeichnis Products / Debug-iphonesimulator ausgegeben wird.Ich musste eine Run Script-Phase hinzufügen, um die Ressource in das App-Bundle zu kopieren:
SRC="$BUILD_DIR/$CONFIGURATION/Resources.bundle"
DEST="$BUILD_DIR/$CONFIGURATION$EFFECTIVE_PLATFORM_NAME/$FULL_PRODUCT_NAME"
cp -R "$SRC" "$DEST"