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 ve çalışma alanı dizininin en üst düzeyini tanımlayan bir
WORKSPACE
dosyası içeren bir Bazel çalışma alanı oluşturun WORKSPACE
dosyasını, gerekli dış bağımlılıkların referanslarını 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'i ve bağımlılıklarını yüklemek için yükleme talimatlarını uygulayın.
Xcode'u yükle
Xcode'u indirip yükleyin. Xcode, Bazel'in Apple uygulamaları derlemesi için gereken derleyicileri, SDK'ları ve diğer araçları içerir.
Örnek projeyi alma
Eğitimin örnek projesini de GitHub'dan almanız gerekir. GitHub deposunun 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 çalışmanızı kontrol etmek için bu daldaki dosyaları kullanabilirsiniz.
Dosyaları source-only
dalındaki dosyaları almak için komut satırına aşağıdakini 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ın yanı sıra Bazel'in yazılımı derlemek için kullandığı talimatları içeren 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ğiticide, Workspace dizininiz $HOME/examples/tutorial/
şeklindedir. Bu dizin, önceki adımda GitHub deposundan klonladığınız örnek proje dosyalarını içerir.
Size kolaylık sağlaması için $WORKSPACE
ortam değişkenini şimdi Workspace dizininize yönlendirecek şekilde ayarlayın. Komut satırına şu kodu 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ımlayan boş bir WORKSPACE
dosyası oluşturacaksınız. Sonraki adımlarda dosyayı harici bağımlılık bilgileri ekleyerek 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üncelleyin
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ı inceleyin
$WORKSPACE/ios-app/UrlGet
konumunda bulunan uygulamanın kaynak dosyalarına göz atın. Yine, uygulamanın yapısını tanımak için
şu anda bu dosyalara yalnızca bakıyorsunuz. Bu eğiticiyi tamamlamak için
kaynak dosyaların hiçbirini düzenlemeniz gerekmez.
BUILD dosyası oluşturun
Komut satırı isteminde, düzenlemek 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 aşağıdaki yük ifadesini BUILD
dosyanızın başına ekleyin:
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
objc_library
kuralı Bazel paketinde yerleşik olarak bulunduğundan yalnızca ios_application
kuralını yüklemeniz gerekir.
objc_library kuralı ekleme
Bazel, iOS platformuna yönelik uygulama oluştururken kullanabileceğiniz çeşitli derleme kuralları sağlar. Bu eğitimde ilk olarak Bazel'a uygulama kaynak kodundan ve Xib dosyalarından statik kitaplık oluşturmayı bildirmek için 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ı ekle
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.
Şimdi dosyayı kaydedin ve kapatın. BUILD
dosyanızı, GitHub deposunun main
dalındaki tamamlanmış örnek ile karşılaştırabilirsiniz.
Uygulamayı derleme ve 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 veya sorun giderme
için çalışmanızı tamamlanan dosyalarla karşılaştırabilirsiniz.
Uygulamayı simülatör için derleme
Geçerli çalışma dizininizin Bazel çalışma alanınızda olduğundan emin olun:
cd $WORKSPACE
Şimdi, örnek uygulamayı derlemek için aşağıdakini girin:
bazel build //ios-app:ios-app
Bazel örnek uygulamayı başlatıp oluşturur. Derleme işlemi sırasında, çıktısı aşağıdakine benzer 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.
Simülatörde uygulamayı çalıştırma ve hata ayıklama
Artık iOS Simülasyon Aracı'nı kullanarak uygulamayı Xcode'dan çalıştırabilirsiniz. Öncelikle Tulsi 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 geliştirme
Uygulamanızı bir iOS cihaza yüklenip başlatılacak şekilde oluşturmak için Bazel'in söz konusu cihaz modeline uygun temel 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
hizmetine 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",
Şimdi cihazınız için bir uygulama derleyin:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
Bu şekilde uygulama, yağ ikili programı olarak derlenir. 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'da Devices
ekranında bulunan View Device Logs
düğmesi, sorunun ne olduğuyla ilgili başka bilgiler sağlayabilir.
Daha fazla bilgi
Daha fazla bilgi için GitHub deposunun ana dalına göz atın.