SORU
13 ŞUBAT 2012, PAZARTESİ


Yapı numarası artırma için daha iyi bir yolu?

Benim böyle büyük mükafat parçası artırmak için süreç içinde yapı inşa etmek gibi bir kabuk kullanıyorumplıstcrash sık (bir proje için hedef olan bir hata ile; değişen tahmin ediyorum . böyle büyük mükafat 4.2.1 yapıyor ancak dosya ^em>plıstdosya kafa karıştırıcı bir şekilde böyle büyük mükafat) vardır.

Kabuk inşa numarası bir dosya daha yeni agvtool artırılır sadece bunu yaptıplıstdosya (sadece bina çok değer artışı olmadı):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

Var yapı numarası artırmak için bir yolplıstböyle büyük mükafat sonu değil dosya veya başka bir yerde?

EDİTBurada benim son çözüm, @Monolo önerisi üzerine kuruludur. ${PROJECT_DIR}/tools aşağıdaki komut dosyası (.xcodeproj dizin kardeş.:

#!/bin/sh

if [ $# -ne 1 ]; then
    echo usage: $0 plist-file
    exit 1
fi

plist="$1"
dir="$(dirname "$plist")"

# Only increment the build number if source files have changed
if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
    buildnum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "$plist")
    if [ -z "$buildnum" ]; then
        echo "No build number in $plist"
        exit 2
    fi
    buildnum=$(expr $buildnum   1)
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "$plist"
    echo "Incremented build number to $buildnum"
else
    echo "Not incrementing build number as source files have not changed"
fi

2 DÜZENLEYİN: Öneri Milliways @birleştirmek için komut dosyası değiştirilmiş.

Ben o zaman böyle büyük mükafat hedef komut çağrılan 'İnşa Aşamaları' bölüm: Xcode build phases screenshot

3 DÜZENLEMEK: @Massimobio cevabı başı olarak, eğer boşluk varsa plıst bağımsız değişken tırnak eklemek gerekir.

4 DÜZENLEYİNBu çağırma benim tercih edilen yöntem, komut dosyası oluşturma güncelleştirme için artık ayrı bir hedef oluşturmak ve uygulamayı bu bağlı hedef haline getirmektirYapı Numarası Bumphedef. Bu app hedefi bulmadan çağrılır sağlarhiçbir şeybu plist (yapı başında plist işlemeye hoşlandığını fark ettim. Ben de geçiş için tamamen python tabanlı bir çözüm olarak tasarlanmıştır sürüm numarası içinde ayrı bir dosya ve yazar versiyonu kaynak dosyaları olarak bu daha kullanışlı, çapraz platform ürünleri (yani Visual Studio altında Windows komut dosyası çağır, ve belli ki cmake/tipi oluşturur bu nedenle aynı zamanda). Bu yapı sayısı her zaman farklı platformlar altında bile aynı yararı vardır, ve aynı zamanda inşa/güncel sürüm ile Resource.rc dosya da Visual Studio güncelleştirme.

CEVAP
15 Temmuz 2014, Salı


Bu soruya cevaplar çok kötü oldum ve hiçbiri beni oldukça tatmin etti. Ancak, sonunda gerçekten böyle bir karışım ile geldi!

İki adım başında bir ve inşa aşamasının sonunda bir tane vardır.

Başında:

# Set the build number to the count of Git commits
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

Sonunda:

# Set the build number to "DEVELOPMENT"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"

Bilgi bakıyor.olduğunu göreceksin böyle büyük mükafat olarak plist "GELİŞME", ama dahili uygulama sürekli artan bir yapı vardır. (Her zaman yaptığın sürece aynı dalın oluşturur.)

Sabit bir dize geri sürüm numarası ayarlama sonunda engeller Bilgileri.uygulama yapı tarafından değiştirilen dosya plist.

Neden ben bu yöntemi gibi:

  • Kolay
  • Git sürüm geçmişi kirleten yok
  • CFBundleVersion tamamen otomatiktir
  • Güzel sürüm numarasını istediğim zaman değiştirilebilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • Orson Wang

    Orson Wang

    28 EKİM 2006