Bu eğitimde, Bazel kullanılarak basit bir iOS uygulamasının nasıl oluşturulacağı açıklanmaktadır.
Neler öğreneceksiniz?
Bu eğitimde şunları öğreneceksiniz:
- Bazel ve Xcode'u yükleyip örnek projeyi indirerek ortamı ayarlayın
- Uygulamanın kaynak kodunu içeren bir Bazel çalışma alanı ve çalışma alanı dizininin en üst düzeyini tanımlayan bir
WORKSPACE
dosyası oluşturun WORKSPACE
dosyasını, gerekli harici bağımlılıklara referanslar içerecek şekilde güncelleyinBUILD
dosyası oluşturma- Uygulamayı simülatör ve iOS cihaz için derlemek üzere Bazel'i çalıştırma
- Uygulamayı simülatörde ve iOS cihazda çalıştırma
Ortamınızı ayarlama
Başlamak için Bazel ve Xcode'u yükleyin ve örnek projeyi alın.
Bazel'i yükleme
Bazel ve bağımlılarını yüklemek için yükleme talimatlarını uygulayın.
Xcode'u yükleme
Xcode'u indirip yükleyin. Xcode, Bazel'in Apple uygulamalarını derlemek için ihtiyaç duyduğu derleyicileri, SDK'ları ve diğer araçları içerir.
Örnek projeyi alma
Eğitimin örnek projesini de GitHub'dan almanız gerekir. GitHub deposunda iki dal vardır: source-only
ve main
. source-only
dalı yalnızca projenin kaynak dosyalarını içerir. Bu eğitimde bu daldaki dosyaları kullanacaksınız. main
dalı hem kaynak dosyaları hem de tamamlanmış Bazel WORKSPACE
ve BUILD
dosyalarını içerir. Eğitim adımlarını tamamladığınızda, bu daldaki dosyaları kullanarak çalışmanızı kontrol edebilirsiniz.
source-only
dalındaki dosyaları almak için komut satırına aşağıdakileri girin:
cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples
git clone
komutu, $HOME/examples/
adlı bir dizin oluşturur. Bu dizin, Bazel için çeşitli örnek projeler içerir. Bu eğitimdeki proje dosyaları $HOME/examples/tutorial/ios-app
adresindedir.
Çalışma alanı oluşturma
Çalışma alanı, bir veya daha fazla yazılım projesinin kaynak dosyalarını, ayrıca Bazel'in yazılımı derlemek için kullandığı talimatları içeren bir WORKSPACE
dosyası ve BUILD
dosyalarını içeren bir dizindir. Çalışma alanı, çıkış dizinlerine yönelik sembolik bağlantılar da içerebilir.
Çalışma alanı dizini, dosya sisteminizin herhangi bir yerinde bulunabilir ve kökünde WORKSPACE
dosyasının bulunmasıyla gösterilir. Bu eğitimde, çalışma alanı dizininiz $HOME/examples/tutorial/
'tür. Bu dizin, önceki adımda GitHub deposundan klonladığınız örnek proje dosyalarını içerir.
Size kolaylık sağlamak için $WORKSPACE
ortam değişkenini çalışma alanı dizininize referans verecek şekilde ayarlayın. Komut satırına şunu girin:
export WORKSPACE=$HOME/examples/tutorial
WORKSPACE dosyası oluşturma
Her çalışma alanında, en üst düzey çalışma alanı dizininde WORKSPACE
adlı bir metin dosyası bulunmalıdır. Bu dosya boş olabilir veya yazılımı derlemek için gereken harici bağımlılıklara referanslar içerebilir.
Şimdilik, yalnızca Workspace dizinini tanımlamak için kullanılan boş bir WORKSPACE
dosyası oluşturacaksınız. Sonraki adımlarda, harici bağımlılık bilgilerini eklemek için dosyayı güncelleyeceksiniz.
Komut satırına aşağıdakileri girin:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
Bu işlem, boş WORKSPACE
dosyasını oluşturup açar.
WORKSPACE dosyasını güncelleme
Bazel'in Apple cihazlar için uygulama derleyebilmesi amacıyla GitHub deposundan en son Apple derleme kurallarını alması gerekir. Bunu etkinleştirmek için WORKSPACE
dosyanıza aşağıdaki git_repository
kurallarını ekleyin:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "build_bazel_rules_apple",
remote = "https://github.com/bazelbuild/rules_apple.git",
tag = "0.19.0",
)
git_repository(
name = "build_bazel_rules_swift",
remote = "https://github.com/bazelbuild/rules_swift.git",
tag = "0.13.0",
)
git_repository(
name = "build_bazel_apple_support",
remote = "https://github.com/bazelbuild/apple_support.git",
tag = "0.7.2",
)
git_repository(
name = "bazel_skylib",
remote = "https://github.com/bazelbuild/bazel-skylib.git",
tag = "0.9.0",
)
Kaynak dosyaları inceleme
$WORKSPACE/ios-app/UrlGet
konumundaki uygulamanın kaynak dosyalarına göz atın. Bu dosyaları şu anda yalnızca uygulamanın yapısına aşina olmak için inceliyorsunuz. Bu eğitimde kaynak dosyalardan herhangi birini düzenlemeniz gerekmez.
BUILD dosyası oluşturma
Komut satırı isteminde, düzenleme için yeni bir BUILD
dosyası açın:
touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD
Kural yükleme beyanını ekleme
Bazel'in iOS hedeflerini derleyebilmesi için derleme her çalıştırıldığında GitHub deposundan derleme kurallarını yüklemesi gerekir. Bu kuralları projenizde kullanılabilir hale getirmek için BUILD
dosyanızın başına aşağıdaki yükleme ifadesini ekleyin:
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
objc_library
kuralı Bazel paketine yerleştirildiğinden yalnızca ios_application
kuralını yüklemeniz gerekir.
objc_library kuralı ekleme
Bazel, iOS platformu için uygulama oluşturmak üzere kullanabileceğiniz çeşitli derleme kuralları sağlar. Bu eğitimde, Bazel'e uygulama kaynak kodundan ve Xib dosyalarından statik kitaplık oluşturmayı öğretmek için önce objc_library
kuralını kullanacaksınız. Ardından, uygulama ikilisini ve .ipa
paketini nasıl derleyeceğini belirtmek için ios_application
kuralını kullanırsınız.
BUILD
dosyanıza aşağıdakileri ekleyin:
objc_library(
name = "UrlGetClasses",
srcs = [
"UrlGet/AppDelegate.m",
"UrlGet/UrlGetViewController.m",
"UrlGet/main.m",
],
hdrs = glob(["UrlGet/*.h"]),
data = ["UrlGet/UrlGetViewController.xib"],
)
Kuralın adını (UrlGetClasses
) not edin.
ios_application kuralı ekleme
ios_application
kuralı, uygulama ikilisini oluşturur ve .ipa
paket dosyasını oluşturur.
BUILD
dosyanıza aşağıdakileri ekleyin:
ios_application(
name = "ios-app",
bundle_id = "Google.UrlGet",
families = [
"iphone",
"ipad",
],
minimum_os_version = "9.0",
infoplists = [":UrlGet/UrlGet-Info.plist"],
visibility = ["//visibility:public"],
deps = [":UrlGetClasses"],
)
deps
özelliğinin, yukarıdaki BUILD
dosyasına eklediğiniz UrlGetClasses
kuralının çıkışını nasıl referans aldığını unutmayın.
Ardından dosyayı kaydedip kapatın. BUILD
dosyanızı, GitHub deposunun main
dalındaki tamamlanmış örnek ile karşılaştırabilirsiniz.
Uygulamayı derleyip dağıtma
Artık uygulamanızı derleyip bir simülatöre ve iOS cihaza dağıtmaya hazırsınız.
Oluşturulan uygulama $WORKSPACE/bazel-bin
dizininde bulunur.
Bu eğitim için tamamlanmış WORKSPACE
ve BUILD
dosyaları, GitHub deposunun ana kolunda yer alır. Daha fazla yardım almak veya sorun gidermek için çalışmanızı tamamlanmış dosyalarla karşılaştırabilirsiniz.
Uygulamayı simülatör için derleme
Mevcut çalışma dizininizin Bazel çalışma alanınızda bulunduğundan emin olun:
cd $WORKSPACE
Şimdi, örnek uygulamayı oluşturmak için aşağıdakileri girin:
bazel build //ios-app:ios-app
Bazel, örnek uygulamayı başlatıp derler. Derleme işlemi sırasında çıktısı aşağıdaki gibi görünür:
INFO: Found 1 target...
Target //ios-app:ios-app up-to-date:
bazel-bin/ios-app/ios-app.ipa
INFO: Elapsed time: 0.565s, Critical Path: 0.44s
Derleme çıkışlarını bulma
.ipa
dosyası ve diğer çıkışlar $WORKSPACE/bazel-bin/ios-app
dizininde bulunur.
Uygulamayı simülatörde çalıştırma ve hata ayıklama
Artık iOS Simülasyon Aracı'nı kullanarak uygulamayı Xcode'dan çalıştırabilirsiniz. Öncelikle, Tulsi'yi kullanarak bir Xcode projesi oluşturun.
Ardından, projeyi Xcode'da açın, çalışma zamanı şeması olarak bir iOS simülasyon cihazı seçin ve Çalıştır'ı tıklayın.
Uygulamayı bir cihaz için oluşturma
Uygulamanızı bir iOS cihazda yüklenip başlatılacak şekilde derlemek için Bazel'in ilgili cihaz modeline uygun hazırlık profiline ihtiyacı vardır. Aşağıdakileri yapın:
Apple Geliştirici Hesabınıza gidin ve cihazınız için uygun temel hazırlama profilini indirin. Daha fazla bilgi için Apple'ın belgelerine bakın.
Profilinizi
$WORKSPACE
'e taşıyın.(İsteğe bağlı) Profilinizi
.gitignore
dosyanıza ekleyin.BUILD
dosyanızdakiios_application
hedefine aşağıdaki satırı ekleyin:provisioning_profile = "<your_profile_name>.mobileprovision",
Ardından uygulamayı cihazınız için derleyin:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
Bu işlem, uygulamayı büyük bir ikili dosya olarak oluşturur. Belirli bir cihaz mimarisi için derlemek istiyorsanız derleme seçeneklerinde bu mimariyi belirtin.
Belirli bir Xcode sürümü için derlemek istiyorsanız --xcode_version
seçeneğini kullanın. Belirli bir SDK sürümü için derlemek istiyorsanız --ios_sdk_version
seçeneğini kullanın. Çoğu durumda --xcode_version
seçeneği yeterlidir.
Gerekli minimum iOS sürümünü belirtmek için BUILD
dosyanızdaki ios_application
derleme kuralına minimum_os_version
parametresini ekleyin.
Uygulamanızı komut satırı yerine GUI kullanarak oluşturmak için Tulsi'yi de kullanabilirsiniz.
Uygulamayı bir cihaza yükleme
Uygulamayı cihaza yüklemenin en kolay yolu Xcode'u başlatıp Windows > Devices
komutunu kullanmaktır. Soldaki listeden takılı cihazınızı seçin, ardından "Yüklü Uygulamalar" bölümündeki Ekle (artı işareti) düğmesini tıklayıp oluşturduğunuz .ipa
dosyasını seçerek uygulamayı ekleyin.
Uygulamanız cihazınıza yüklenemezse BUILD
dosyanızda doğru temel hazırlık profilini belirttiğinizden emin olun (önceki bölümdeki 4. adım).
Uygulamanız başlatılamazsa cihazınızın temel hazırlama profilinizin parçası olduğundan emin olun. Xcode'daki Devices
ekranındaki View Device Logs
düğmesi, hatayla ilgili başka bilgiler sağlayabilir.
Daha fazla bilgi
Daha fazla bilgi için GitHub deposunun ana dalına bakın.