Die Versionsnummer von Settings.bundle wird als $ aktualisiert (MARKETING_VERSION)


8

Ich habe eine App, die automatisch Versionen einstellt, wenn ich von erhöht habe

XCode> Allgemein> Version .

Aber kürzlich habe ich XCode auf 11.0 aktualisiert und es scheint, dass das Skript nicht wie erwartet funktioniert:

version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/MyApp/Info.plist`
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

Angenommen, das obige Skript aktualisiert die Version automatisch und wäre unter Einstellungen> App sichtbar gewesen.

Geben Sie hier die Bildbeschreibung ein

Die Frage ist jedoch, ob Änderungen an diesem Skript vorgenommen werden müssen, damit die Versionsnummer von XCode automatisch aktualisiert wird.

Derzeit wird es durch Skripte als $ (MARKETING_VERSION) ersetzt, wenn die Version von XCode> Allgemein> Version erhöht wird, was nicht korrekt ist.



Es hat funktioniert, indem einige Änderungen vorgenommen wurden, wie in meiner Antwort erwähnt. Ich bin mir jedoch nicht sicher, ob es eine gute Idee ist, wie Sie aus dem Storyboard zu extrahieren.
Nagarjun

Das wird nicht aus dem Storyboard extrahiert . Das ersetzt es.
Mojtaba Hosseini

Sie verwenden sourceFilePath überhaupt nicht, nicht wahr?
Nagarjun

Nein (Fehler), aber das ist nicht Teil des Problems;)
Mojtaba Hosseini

Antworten:


5

Die Versionszeichenfolge $MARKETING_VERSIONsowie die Build-Nummer $CURRENT_PROJECT_VERSIONwerden jetzt während des Build-Prozesses als Umgebungsvariable angezeigt, da sie jetzt in der .pbxprojKonfiguration beibehalten werden.

Sie sollten in der Lage sein, das zu erreichen, was Sie wollen:

version="$MARKETING_VERSION ($CURRENT_PROJECT_VERSION)"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

$ CURRENT_PROJECT_VERSION zeigt nichts an. Die Version wird jedoch in $ MARKETING_VERSION angezeigt.
Nagarjun

2

Es hat funktioniert, indem MARKETING_VERSION selbst angezeigt wurde: Vielen Dank an @dgimb und @Mojtaba Hosseini für Ihre Antworten.

version="$MARKETING_VERSION"
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"

/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

Ich habe eine Fehlermeldung Set: Eintrag, "PreferenceSpecifiers: 1: DefaultValue", existiert nicht Befehl PhaseScriptExecution ist mit einem Exit-Code ungleich Null fehlgeschlagen
ΩlostA

Können Sie das Skript teilen?
Nagarjun
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.