Bu eğiticide, Bazel kullanarak basit bir iOS uygulamasının nasıl oluşturulacağı ele alınmaktadı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 dış bağımlılıkların referanslarını içerecek şekilde güncelleyinBUILD
dosyası oluşturun- Simülatör ve iOS cihaz için uygulama derlemek üzere Bazel'ı çalıştırın
- 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
Ayrıca, GitHub'dan eğitim için örnek projeyi 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ğiticide 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 dizinde Bazel için birkaç örnek proje bulunmaktadır. Bu eğiticinin proje dosyaları
$HOME/examples/tutorial/ios-app
içindedir.
Ç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 sembolik bağlantılar da içerebilir.
Çalışma alanı dizini, dosya sisteminizin herhangi bir yerinde bulunabilir ve kök dizininde WORKSPACE
dosyasının bulunmasıyla belirtilir. 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şturun
Her çalışma alanının, üst düzey çalışma alanı dizininde bulunan WORKSPACE
adlı bir metin dosyası olmalı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ğıdakini girin:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
Bu işlemle boş WORKSPACE
dosyası oluşturulup açılır.
WORKSPACE dosyasını güncelleyin
Apple cihazlara yönelik uygulamalar derlemek için Bazel'in GitHub deposundan en yeni Apple derleme kurallarını çekmesi gerekiyor. 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ükü ifadesini ekleyin
iOS hedefleri oluşturmak için Bazel'in, derleme her çalıştığı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 ikili programının ve .ipa
paketinin nasıl oluşturulacağını belirtmek için ios_application
kuralını kullanacaksı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 ikili programını 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ıda BUILD
dosyasına eklediğiniz UrlGetClasses
kuralının çıkışına nasıl başvurduğunu unutmayın.
Şimdi dosyayı kaydedin ve kapatın. BUILD
dosyanızı, GitHub deposunun main
dalındaki tamamlanan örnekle karşılaştırabilirsiniz.
Uygulamayı derleme ve dağıtma
Artık uygulamanızı derlemeye ve bir simülatöre ve iOS cihaza dağıtmaya hazırsınız.
Derlenen uygulama, $WORKSPACE/bazel-bin
dizininde bulunuyor.
Bu eğitim için tamamlanan WORKSPACE
ve BUILD
dosyaları GitHub deposunun ana dalında bulunmaktadır. Daha fazla yardım veya sorun giderme
için çalışmanızı tamamlanan dosyalarla karşılaştırabilirsiniz.
Simülatör için uygulama oluşturma
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ülatörü'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ülatörü seçin ve Çalıştır'ı tıklayın.
Uygulamayı bir cihaz için geliştirme
Uygulamanızı bir iOS cihaza yüklenecek ve çalıştırı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ırlık profilini indirin. Daha fazla bilgi için Apple'ın belgelerini inceleyin.
Profilinizi
$WORKSPACE
hizmetine taşıyın.(İsteğe bağlı) Profilinizi
.gitignore
dosyanıza ekleyin.Aşağıdaki satırı
BUILD
dosyanızdakiios_application
hedefine 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 mimarisine göre derleme yapmak için, derleme seçeneklerinde bunu belirtin.
Belirli bir Xcode sürümü için derleme yapmak istiyorsanız --xcode_version
seçeneğini kullanın. Belirli bir SDK sürümü oluşturmak için --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 minimum_os_version
parametresini BUILD
dosyanızdaki ios_application
derleme kuralına 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şlatmak ve Windows > Devices
komutunu kullanmaktır. Soldaki listeden takılı cihazınızı seçin, sonra "Yüklü Uygulamalar" altındaki 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ümde belirtilen 4. adım).
Uygulamanız başlatılamadıysa cihazınızın temel hazırlık profilinizin bir 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.