2012-09-12 17 views

Respuesta

6

Puede hacerlo en Esquemas. Abra su esquema (edit), expanda Build en su esquema, haga clic en Pre-Actions, haga clic en el botón +, seleccione New Run Script Action y escriba algún script que obtenga SHA y modifique algún archivo de encabezado donde puede poner SHA (la manera más fácil es #define GIT_SHA @"...") y use GIT_SHA en su aplicación en un lugar donde pueda visualizarla.

+1

La parte "escribir algunas secuencias de comandos" es la parte no trivial. Su respuesta es básicamente _ "cómo hago que Xcode haga algo en tiempo de compilación" _ cuando la pregunta era esencialmente _ "cómo hago que Xcode en tiempo de compilación obtenga el Git SHA actual y lo haga accesible al código Objective-C/Swift" _. –

16

Versión 2.17. Construye a85b242.

Si desea agregar un control de versiones bastante como este sobre, sólo tienes que seguir estos pasos:

  1. abierto Build Phases en Xcode
  2. Prensa Add Build Phase
  3. Add Run Script Build Phase Press. Puede encontrar esto en el menú superior Editor. Arrastre script-line a la posición después de Target Dependencies.
  4. Conjunto Shell línea a /bin/sh
  5. Establecer la secuencia de comandos siguiente para el campo Guión. No olvides cambiar Fuentes a tu ruta de acceso al archivo, donde debería estar GitVersion.h. Por ejemplo:

    version=$(git rev-parse --verify HEAD | cut -c 1-7) 
    curdate=$(date +"%d.%m.%y") 
    
    filesource="//\n// GitVersion.h\n//\n// Created by sig on $curdate.\n//\n\n#ifndef GitVersion_h\n#define GitVersion_h\n\n#define GIT_SHA_VERSION @\"$version\"\n\n#endif" 
    
    cd ${SOURCE_ROOT}/${PROJECT_NAME} 
    echo -e "$filesource" > Sources/GitVersion.h 
    
    touch Sources/GitVersion.h 
    
  6. importación GitVersion.h archivo en Xcode proyecto

  7. Pegar estas líneas:

    NSDictionary *info = [[NSBundle mainBundle] infoDictionary]; 
    NSString *version = [info objectForKey:@"CFBundleShortVersionString"]; 
    NSString *app_version = [NSString stringWithFormat:@"Version %@. Build %@.", version, GIT_SHA_VERSION]; 
    
    NSLog(@"app_version : %@", app_version); 
    

respuesta totalmente documentado con imágenes y ventajas descritas podría ser encontrado here.

+0

¿Por qué voto negativo sobre esto? – Boon