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.

Nagarjun
quelle
1
Ist es nicht das, wonach Sie suchen? Wie-lesen-aktuelle-App-Version-in-Xcode-11-mit-Skript
Mojtaba Hosseini
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"
dgimb
quelle
$ 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"
Nagarjun
quelle
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