El número de versión de Settings.bundle se actualiza como $ (MARKETING_VERSION)


8

Tengo una aplicación que estaba configurando versiones automáticamente cuando incrementé desde

XCode> General> Versión .

Pero recientemente he actualizado XCode a 11.0 y parece que el script no funciona como se esperaba:

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"

El script anterior supone actualizar automáticamente la versión y habría sido visible en Configuración> Aplicación.

ingrese la descripción de la imagen aquí

Pero la pregunta es si se necesita hacer algún cambio para que este script actualice automáticamente el número de versión de XCode.

Actualmente está siendo reemplazado por scripts como $ (MARKETING_VERSION) cuando la versión se incrementa desde XCode> General> Versión que no es correcta.



Funcionó haciendo algunos cambios como se menciona en mi respuesta. Pero no estoy seguro de si es una buena idea extraer del guión gráfico como lo está haciendo.
Nagarjun

Eso no se extrae del guión gráfico. Eso lo reemplaza.
Mojtaba Hosseini

No estás usando sourceFilePath, ¿verdad?
Nagarjun

No (error), pero eso no es parte del problema;)
Mojtaba Hosseini

Respuestas:


5

La cadena de versión $MARKETING_VERSIONy el número de compilación $CURRENT_PROJECT_VERSIONahora se exponen como variable de entorno durante el proceso de compilación, ya que ahora se conservan en la .pbxprojconfiguración.

Deberías poder lograr lo que quieres así:

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

$ CURRENT_PROJECT_VERSION no muestra nada. Sin embargo, la versión se muestra en $ MARKETING_VERSION.
Nagarjun

2

Funcionó mostrando MARKETING_VERSION en sí: Gracias @dgimb y @Mojtaba Hosseini por sus respuestas.

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"

Tengo un mensaje de error Set: Entry, "PreferenceSpecifiers: 1: DefaultValue", No existe el comando PhaseScriptExecution falló con un código de salida distinto de cero
ΩlostA

¿Puedes compartir el guión?
Nagarjun
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.