Neues Build-System verhindert git-Infos in info.plist

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Neues Build-System verhindert git-Infos in info.plist

    Hallo zusammen,

    ich nutze in meinen Projekten eine Run-Script--Phase, um Tags / Commit-Anzahlen aus git für die Versionsnummern meiner Bundles zu verwenden (Link). Das klappte bisher super, aber nun ist mir bei einem neuen Projekt aufgefallen, dass die info.plist im Build-Verzeichnis nach dem Script überschrieben wird ... die Versionsstrings sind also wieder auf dem Stand der Sourcen in Xcode. Diesen möchte ich aber nicht überschreiben, da ich dann immer unnötige Änderungen der info.plist in git habe.

    Es liegt offensichtlich am neuen Build-System, dass eine "Process ... info.plist"-Phase nach der Run-script-Phase ausführt:

    Apple schrieb:

    In the new build system, shell scripts can't rely on the state of build artifacts not listed in other build phases (for example, the Info.plist file or .dSYM files.) Add files the script build phase depends on as explicit input dependencies to the shell script build phase. (40852184)
    Die hier genannten Abhängigkeiten helfen mir aber nicht weiter, da (bei inkrementellem Build) die info.plist ja schon existiert. Nach einem Clean funktioniert es...

    Wie löst Ihr das Problem, git-Informationen in der info.plist zu verwenden? Ich kann leider nicht auf das "legacy build system" wechseln, weil ich Marzipan verwenden möchte.

    Grüße, Mattes

    P.S.: Eine Lösung auf SO nutzt das Build-Scheme mit anschließendem erneuten Signing ... aber da muss doch einfacher gehen :)
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Chris schrieb:

    Ich hab in der Run-Script-Phase unter Input Files $TARGET_BUILD_DIR/$INFOPLIST_PATH stehen
    Ein dickes Danke @Chris! Das Leben kann so einfach sein: Ich hatte in die gleiche Richtung gedacht, aber bei der Angabe der Pfad-Variablen einen Fehler gemacht.

    Meine obige Aussage bzgl. Existenz der info.plist ist offensichtlich Quark, da eine Änderung der Input Files ausreicht, um die Run-Script-Phase zu triggern. Und die o. g. Abhängigkeit erzwingt, dass die info.plist vorher erzeugt wird. Super!

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.