.Xcscheme dosyasıyla ilgili olarak kesinlikle doğru yoldasınız - bu sorun kendi projelerimi oluştururken ortaya çıktı!
Gelecek kuşaklar için veya en azından bir aramadan buraya gelenler için, işte iki versiyon var - "Meşgulüm, bu yüzden sadece gerçekler lütfen" versiyonu ve daha kapsamlı bir tartışma ve mantık. Bu sürümlerin her ikisi de bir Çalışma Alanı dosyasından derlemeye çalıştığınızı varsayar; Değilseniz, özür dilerim çünkü bu çoğunlukla çalışma alanı tabanlı projeler için geçerli.
Yoğun 'Düzelt' Sürümü
Temel neden, Şemaların varsayılan davranışının, özellikle paylaşılan olarak işaretlenene kadar şemaları 'özel' tutmak olmasıdır. Komut satırı ile başlatılan bir derleme durumunda, Xcode UI asla çalışmaz ve xcoderun aracının üzerinde çalışacak kendi Şema önbelleği yoktur. Amaç, Bamboo'nun çalıştırmasını istediğiniz düzeni oluşturmak, paylaşmak ve uygulamaktır:
- Kodun temiz çalışan bir kopyasında, Projenizin çalışma alanını açın.
- Ürün Menüsünden Şema> Şemaları Yönet ... öğesini seçin.
- Proje için tanımlanan Şemaların listesi görüntülenir.
- Şema Bamboo'nun çalıştırılmaya çalıştığı yeri bulun
- Bu şema için 'Paylaşılan' kutusunun işaretlendiğinden ve 'Kapsayıcı' ayarının proje dosyasının kendisine değil, Çalışma Alanı'na ayarlandığından emin olun.
- Düzenleri Yönet sayfasını kapatmak için 'Tamam'ı tıklayın.
- WorkspaceName.xcworkspace / xcshareddata / xcschemes adresindeki projenizde yeni bir .xcscheme dosyası oluşturuldu.
- Bu dosyayı deponuza işleyin ve bir Bamboo derlemesi çalıştırın.
Daha Derin Tartışma ve Gerekçe
Xcode 4, kablolama ile ilgili Xcode projelerinin mekanikleriyle uğraşmanın, hedefler oluşturmanın ve birlikte yapılandırmalar oluşturmanın doğasında olan kaosun bazılarını denemek ve evcilleştirmek için bir yol olarak Çalışma Alanları ve Şemaları tanıttı. Çalışma alanının kendisi, içerdiği daha küçük veri 'kutularının' her birini tanımlayan kendi yapılandırma verisine sahiptir ve .xcodeproj dosyalarını eklemek için bir iskelet ve her geliştirici makinesine veya CI sistemine yansıtılan bir dizi paylaşılan yapılandırma verisi görevi görür. . Bu, Çalışma Alanlarının hem gücü hem de tuzağıdır - 1) işleri% 100 doğru şekilde yapılandırmanın, ancak yanlış konteynere koymanın veya 2) doğru konteynere koymanın, ancak uygun olmayan şekilde yapılandırmanın veri oluşturması için birçok yol vardır. sistemin diğer bölümleri tarafından erişilemez!
Xcode 4 şemalarının varsayılan davranışı, projeler Çalışma Alanı dosyasına eklenirken otomatik olarak yeni şemalar oluşturmaktır. Birkaç .xcodeproj dosyası eklemiş olanlar, özellikle proje dosyaları eklendikçe, daha sonra kaldırıldıktan sonra aynı çalışma alanına okundukça şema listenizin hızla işe yaramaz hale geldiğini fark etmiş olabilirler. Tüm şemalar, otomatik olarak oluşturulmuş veya manuel olarak oluşturulmuş, varsayılan olarak yalnızca mevcut kullanıcı tarafından görülebilen 'özel' şemalar olur, hatta .xcuserdata dosyaları projenin verileri ve yapılandırmasıyla işlendiğinde bile. Bamboo, xcodebuild'den gelen şifreli yapı hatasının temel nedenidir - Bamboo, yapıyı Xcode UI üzerinden değil, komut satırından çalıştırdığından, Şemaların otomatik olarak oluşturulma fırsatı yoktur ve yalnızca aşağıdakilere güvenir. çalışma alanının kendisinde tanımlanır.
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild <'çalışma alanı' Parametre Değeri> / xcshareddata / xcschemes'de bulunan <'düzen' Parametre Değeri> .xcscheme dosyasını aramaya gider.
Açıkçası, hem Bamboo'ı hem de bir çalışma alanını yapılandırmanın birçok yolu vardır, bu nedenle benzersiz yapılandırmanızın burada sunulanlarla% 100 eşleşmeyebileceğini unutmayın. Temel çıkarımlar:
- Xcode UI'nin sihirli bir şekilde hallettiği bazı otomatik görevler, Xcodebuild CLI aracılığıyla kullanılamaz.
- 'Kapsayıcı hiyerarşisindeki' birçok yere şema ekleyebilir ve yapılandırma verilerini oluşturabilirsiniz - Verilerinizin doğru kapsayıcıda (Çalışma Alanı, Proje ve / veya Oluşturma Hedefi) toplandığından emin olun.
- Xcodebuild aracının konteyner hiyerarşisinin neresinde yapılandırma verilerini arıyor olabileceğini düşünün; Nereden bakmaya başlayacağına dair harika bir gösterge, '-çalışma alanı' veya '-proje' argümanlarının kullanımına dayanır.
'Paylaşılan' kutusu zaten işaretlendi ... şimdi ne olacak?
Aynı sorunla kendi Bamboo örneğimde karşılaştım; benim depomda işlenen şemanın güncelliğini yitirdiği ve komut satırı araçlarının en son sürümünün onu incelikle işlemediği ortaya çıktı. Bu daha önce var olduğu için, şemayla ilgili göze batacak şekilde özel bir şey olmadığından emin olmak için ayarlara bir göz attım, şemayı 'Paylaşılan' olarak işaretlediğimden emin olmak için sildim ve yeniden oluşturdum ve yeni .xcscheme dosyasını deposu.
Her şey iyi görünüyorsa ve yeniden inşa etmek sorunu çözmüyorsa, bu kapsayıcı ayarını iki kez kontrol edin - bu düzeni hiyerarşide yanlış kapsayıcıya eklemek gerçekten çok kolaydır!