2012-09-12 16 views

risposta

6

È possibile farlo in Schemi. Apri lo schema (modifica), espandi Costruisci nello schema, fai clic su Pre-Azioni, fai clic sul pulsante +, seleziona Nuova azione Script di esecuzione e scrivi uno script che ottiene SHA e modifica un file di intestazione in cui puoi inserire SHA (il modo più semplice è #define GIT_SHA @"...") e utilizzare GIT_SHA nella propria app in un luogo in cui è possibile visualizzarlo.

+1

La parte "scrivi un po 'di script" è la parte non banale. La tua risposta è fondamentalmente _ "come faccio a fare Xcode in fase di compilazione" _ quando la domanda era essenzialmente _ "come faccio a fare in modo che Xcode in fase di compilazione ottenga l'attuale Git SHA e lo renda accessibile al codice Objective-C/Swift" _. –

16

Versione 2.17. Costruisci a85b242.

Se si desidera aggiungere una bella versioning del genere di cui sopra, basta seguire questi passaggi:

  1. aperto Build Phases in Xcode
  2. Press Add Build Phase
  3. Press Add Run Script Build Phase. Puoi trovarlo nel menu in alto Editor. Trascina la riga di script nella posizione dopo Target Dependencies.
  4. Set Shell linea per /bin/sh
  5. Impostare lo script di seguito per il campo Script. Non dimenticare di modificare Sorgenti nel percorso percorso file, dove dovrebbe essere GitVersion.h. Per esempio:

    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. Importa GitVersion.h file in Xcode progetto

  7. Incollare queste righe:

    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); 
    

risposta completamente documentato con immagini e vantaggi descritti potrebbero essere trovato here.

+0

Perché voto negativo su questo? – Boon