Bu sayfada, Bazel ile bir Xcode projesinin nasıl oluşturulacağı veya test edileceği açıklanmaktadır. Google Xcode ve Bazel arasındaki farkları açıklamış ve Xcode projesini Bazel projesine dönüştürün. Ayrıca sorun giderme çözümlerini uygulayın.
Xcode ve Bazel arasındaki farklar
Bazel, her derleme hedefini ve derleme hedefini bağımlılıklarını ve derleme kuralları aracılığıyla ilgili derleme ayarlarını görebilirsiniz.
Bazel, projenin var olması gereken tüm dosyaları gerektirir veya
WORKSPACE
içinde içe aktarma işlemleri olarak belirtilir. dosyası olarak kaydedebilirsiniz.Bazel ile Xcode projeleri oluştururken
BUILD
dosyaları veri kaynağıdır. Xcode'da proje üzerinde çalışıyorsanızBUILD
dosyalarıyla eşleşen Xcode projesinin yeni sürümünü (ör. Xcode projesi için)BUILD
dosyalarını her güncellediğinizde Tulsi. Eğer Xcode kullanmazsanızbazel build
vebazel test
komutları size bu bölümde açıklanan belirli sınırlamalarla geliştirme ve test etme rehberini inceleyin.Derleme yapılandırması şemalarındaki dizin düzenleri gibi farklılıklar nedeniyle Xcode "büyük resmi" tam olarak bilmiyor olabilir. olduğundan bazı Xcode özellikleri çalışmayabilir. Örneğin:
Tulsi'de dönüşüm için seçtiğiniz hedeflere bağlı olarak, Xcode proje kaynağını dizine doğru şekilde dizine ekleyememesine neden olabilir. Bu, kodu etkiler Xcode tüm tamamlama ve gezinme işlevlerini göremeyeceğinden, projenin kaynak kodu olabilir.
Statik analiz, adres dezenfektanları ve iplik dezenfektanları, Çünkü Bazel, Xcode'un kendisi için beklediği çıktıları üretmez. özellikler.
Tulsi ile bir Xcode projesi oluşturur ve bu projeyi çalıştırmak için Xcode içinden yapılan bir testte çalışırsa Xcode, Bazel. Bazel ile test yapmak için
bazel test
komutunu manuel olarak çalıştırın.
Başlamadan önce
Başlamadan önce aşağıdakileri yapın:
Henüz yapmadıysanız Bazel'i yükleyin.
Bazel ve kavramlarına aşina değilseniz iOS uygulaması eğitimi). Bazel'i doğru anlamalısınız.
WORKSPACE
veBUILD
dosyalarının yanı sıra Bazel paketleri ve hedefler, derleme kuralları ve Bazel paketleri hakkında bilgi edinin.Projenin bağımlılıklarını analiz etme ve anlama.
Proje bağımlılıklarını analiz etme
Xcode'dan farklı olarak, Bazel bir web sitesi için tüm bağımlılıkları
BUILD
dosyasındaki her hedef.
Dış bağımlılıklar hakkında daha fazla bilgi için Dış bağımlılıklarla çalışma.
Bazel ile Xcode projesi derleme veya test etme
Bazel ile bir Xcode projesi oluşturmak veya test etmek için aşağıdakileri yapın:
1. Adım: WORKSPACE
dosyasını oluşturun
Yeni bir dizinde bir WORKSPACE
dosyası oluşturun. Bu dizin Bazel olur
çalışma alanı kökü. Projede harici bağımlılık kullanılmıyorsa bu dosya
boştur. Proje,
projedeki harici bağımlılıkları WORKSPACE
bölümünde belirtin.
dosyası olarak kaydedebilirsiniz.
2. Adım: (Deneysel) CocoaPods bağımlılıklarını entegre etme
CocoaPods bağımlılıklarını Bazel çalışma alanına entegre etmek için Bunları CocoaPods bağımlılıklarını dönüştürme bölümünde açıklandığı şekilde Bazel paketlerine dönüştürün.
3. Adım: BUILD
dosyası oluşturun
Çalışma alanını ve harici bağımlılıkları tanımladıktan sonra
Bazel'a projenin nasıl yapılandırıldığını bildiren bir BUILD
dosyası oluşturun. İçerik üretme
Bazel çalışma alanının kök dizininde bulunan BUILD
dosyasını yükleyin ve bunu bir
şu şekilde açıklayabiliriz:
- Adım 3a: Uygulama hedefini ekleyin
- Adım 3b: (İsteğe bağlı) Test hedeflerini ekleyin
- Adım 3c: Kitaplık hedeflerini ekleyin
İpucu: Paketler ve diğer Bazel kavramları hakkında daha fazla bilgi edinmek için Çalışma alanları, paketler ve hedefler.
Adım 3a: Uygulama hedefini ekleyin
macos_application
ekleyin
veya ios_application
kural hedefine gidin. Bu hedef sırasıyla bir macOS veya iOS uygulama paketi oluşturur.
Hedefte en azından aşağıdakileri belirtin:
bundle_id
- ikilik.provisioning_profile
- Apple Developer'ınızdan temel hazırlık profili hesabı (iOS cihaz için oluşturuyorsanız).families
(yalnızca iOS) - iPhone, iPad veya iPhone ya da iPad için uygulama ya da her ikisi de olabilir.infoplists
- son Info .plist dosyasında birleştirilecek.plist dosyalarının listesi.minimum_os_version
- destekler. Bu sayede Bazel, uygulamayı ve doğru API düzeylerini belirlemenize yardımcı olur.
3b Adımı: (İsteğe bağlı) Test hedeflerini ekleyin
Bazel'in Apple oluşturma kuralları desteği iOS ve macOS'te kitaplık tabanlı birim testleri ve uygulama tabanlı üzerinde çalışıyoruz. platformunda, Bazel test çıkışlarını derler ancak testlerin Xcode'da çalıştırılması gerekir Tulsi ile oluşturulan bir proje üzerinden yürütülmesi anlamına gelir. Test hedeflerini aşağıdaki gibi ekleyin:
macOS'te kitaplık tabanlı ve uygulama tabanlı birim testleri çalıştırmak için
macos_unit_test
.ios_unit_test
kullanarak iOS'te kitaplık tabanlı birim testlerini çalıştırabilirsiniz. iOS gerektiren testler için yoksa Bazel test çıkışlarını derler ancak testleri çalıştırmaz. Şunu yapmalısınız: Tulsi ile bir Xcode projesi oluşturma ve testleri Xcode içinden çalıştırmanız gerekir.ios_ui_test
iOS simülatöründe kullanıcı arayüzü testlerini çalıştırmak için gereken çıkışları derlemek (Xcode kullanarak). Tulsi ile bir Xcode projesi oluşturmalısınız. ve testleri Xcode içinden çalıştırmanız gerekir. Bazel, kullanıcı arayüzü testlerini yerel olarak çalıştıramaz.
En azından, minimum_os_version
özelliği için bir değer belirtin. Bu sırada
bundle_identifier
ve infoplists
gibi diğer paketleme özelliklerini
en yaygın şekilde kullanılan değerlere varsayılan olarak ayarlayın ve bu varsayılan değerlerin uyumlu olduğundan emin olun.
ve gerektiğinde bu değişiklikleri de düzenleyebilirsiniz. iOS gerektiren testler için
simülatörü için aynı zamanda ios_application
hedef adını da
test_host
özelliği için de geçerlidir.
3c Adımı: Kitaplık hedeflerini ekleyin
objc_library
ekleyin
her bir Hedef C kitaplığı ve bir swift_library
için bir hedef
her Swift kitaplığı için hedef belirleyebilirsiniz.
Kitaplık hedeflerini aşağıdaki gibi ekleyin:
Uygulama kitaplığı hedeflerini uygulamaya bağımlılık olarak ekleme belirler.
Test kitaplığı hedeflerini, test hedeflerine bağımlılık olarak ekleyin.
srcs
özelliğinde uygulama kaynaklarını listeleyin.Başlıkları,
hdrs
özelliğinde listeleyin.
Derleme kuralları hakkında daha fazla bilgi edinmek için Bazel için Apple Kuralları'na bakın.
Bu noktada, derlemeyi test etmek iyi bir fikirdir:
bazel build //:<application_target>
4. Adım: (İsteğe bağlı) Derlemeyi ayrıntılandırın
Proje büyükse ya da büyüdükçe birden fazla projeye bölebilirsiniz. Bazel paketleri Bu artan ayrıntı düzeyi şunları sağlar:
Derlemelerin artımlılığı,
Derleme görevlerinde daha fazla paralellik yapılması,
Gelecekteki kullanıcılar için daha iyi sürdürülebilirlik,
Hedefler ve paketler genelinde kaynak kodu görünürlüğü üzerinde daha iyi kontrol. Bu Uygulama ayrıntılarının sızdırılmasını içeren kitaplıklar gibi sorunları önler herkese açık API'lere dönüştürebilirsiniz.
Projeyi ayrıntılandırmaya yönelik ipuçları:
Her kitaplığı kendi Bazel paketine yerleştirin. Birincisi, ikincisi web sitesi ve en aza indirilerek bağımlılık ağacında yükseltin.
BUILD
dosyaları ekleyip hedef belirlerken bu yeni hedefleri Kendilerine bağlı hedeflerindeps
özelliği.glob()
işlevi, paket sınırlarını geçmediğinden sayı oranında paket büyür,glob()
ile eşleşen dosyalar küçülür.main
dizinineBUILD
dosyası eklerken, şurayaBUILD
dosyasını da ekleyin: ilgilitest
dizinini oluşturur.Paketler genelinde sağlıklı görünürlük sınırları uygulayın.
BUILD
dosyalarında yapılan her büyük değişikliklerden sonra projeyi oluşturma ve düzeltme oluşturmak için bilgi edinin.
5. Adım: Derlemeyi çalıştırın
Hata veya uyarı olmadan tamamlandığından emin olmak için tamamen taşınmış derlemeyi çalıştırın. Kaynakları daha kolay bulmak için her uygulamayı çalıştırın ve hedefleri tek tek test edin olup olmadığını kontrol edin.
Örneğin:
bazel build //:my-target
6. Adım: Tulsi ile Xcode projesini oluşturun
Bazel ile derleme yaparken WORKSPACE
ve BUILD
dosyaları kaynak olur
emin olmanız gerekir. Xcode'un bundan haberdar olması için
Tulsi kullanan Bazel uyumlu Xcode projesi.
Sorun giderme
Seçilen Xcode sürümüyle senkronize olmadığında Bazel hataları ortaya çıkabilir. Örneğin bir güncelleme uygulayabilirsiniz. Aşağıda, Xcode ile ilgili hata oluştu, örneğin "Xcode sürümü Apple CROSSTOOL kullanın".
Xcode'u manuel olarak çalıştırın ve tüm hükümler ve koşulları kabul edin.
Doğru sürümü belirtmek için Xcode seçme özelliğini kullanın, lisansı kabul edin ve Bazel'in durumunu netleştirmek.
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license
bazel sync --configure
- Bu işe yaramazsa
bazel clean --expunge
çalıştırmayı da deneyebilirsiniz.