2012-09-12 20 views
8

Tôi muốn hiển thị git SHA hiện tại khi dự án của tôi được xây dựng trong Ứng dụng của tôi. Một cách hay để làm điều này trong một dự án iOS với nỗ lực tối thiểu là gì?Thêm git commit SHA vào ứng dụng iOS

Trả lời

6

Bạn có thể làm điều đó trong Đề án. Mở chương trình của bạn (sửa), mở rộng Build trong sơ đồ của bạn, click vào Pre-Actions, nhấn vào nút +, chọn New Run Script Action và viết một số kịch bản được SHA và sửa đổi một số tập tin tiêu đề, nơi bạn có thể đặt SHA (cách dễ nhất là #define GIT_SHA @"...") và sử dụng GIT_SHA trong ứng dụng của bạn ở một nơi mà bạn có thể hiển thị nó.

+1

Phần “viết một số tập lệnh” là phần không quan trọng. Câu trả lời của bạn về cơ bản là _ “làm cách nào để làm cho Xcode làm điều gì đó tại thời gian biên dịch” _ khi câu hỏi về cơ bản là _ “làm thế nào để tôi làm cho Xcode tại thời gian biên dịch nhận được Git SHA hiện tại và làm cho nó có thể truy cập được tới mã Objective-C/Swift” _. –

16

Phiên bản 2.17. Xây dựng a85b242.

Nếu bạn muốn thêm một phiên bản khá như thế này ở trên, chỉ cần làm theo các bước sau:

  1. mở Build Phases trong Xcode
  2. Nhấn Add Build Phase
  3. Nhấn Add Run Script Build Phase. Bạn có thể tìm thấy điều này trong trình đơn trên cùng Trình biên tập. Kéo tập lệnh vào vị trí sau Target Dependencies.
  4. Set Shell dòng để /bin/sh
  5. Đặt kịch bản dưới đây để lĩnh vực Script. Đừng quên thay đổi Nguồn vào đường dẫn đến tệp của bạn, trong đó GitVersion.h phải là. Ví dụ:

    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. nhập GitVersion.h file vào Xcode dự án

  7. Dán những dòng này:

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

tài liệu đầy đủ câu trả lời với những hình ảnh và mô tả lợi thế có thể là được tìm thấy here.

+0

Tại sao bỏ phiếu phủ định về điều này? – Boon

Các vấn đề liên quan