Bu eğiticide, Bazel kullanarak 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ıklarla ilgili referansları içerecek şekilde güncelleyin.BUILD
dosyası oluşturma- Uygulamayı simülatör ve iOS cihaz için oluşturmak ü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 edinin.
Bazel'i yükleme
Bazel'i 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ı oluşturmak için ihtiyaç duyduğu derleyicileri, SDK'ları ve diğer araçları içerir.
Örnek projeyi alma
Ayrıca, eğitim için örnek projeyi GitHub'dan almanız gerekir. GitHub deposunda source-only
ve main
olmak üzere iki dal vardır. 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ğitimdeki adımları tamamladığınızda çalışmanızı kontrol etmek için bu daldaki dosyaları kullanabilirsiniz.
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 dizinde Bazel için çeşitli örnek projeler yer alır. Bu eğitimin proje dosyaları $HOME/examples/tutorial/ios-app
klasöründe yer alır.
Çalışma alanı oluşturma
Çalışma alanı, bir veya daha fazla yazılım projesinin kaynak dosyalarını, WORKSPACE
dosyasını ve Bazel'in yazılımı oluşturmak için kullandığı talimatları içeren 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ündeki WORKSPACE
dosyasının varlığıyla gösterilir. Bu eğitimde, çalışma alanı dizininiz $HOME/examples/tutorial/
'dır. Bu dizin, önceki adımda GitHub deposundan klonladığınız örnek proje dosyalarını içerir.
Kolaylık sağlaması için $WORKSPACE
ortam değişkenini şimdi ç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ı oluşturmak için gereken harici bağımlılıklarla ilgili referanslar içerebilir.
Şimdilik, yalnızca çalışma alanı dizinini tanımlamaya yarayan boş bir WORKSPACE
dosyası oluşturacaksınız. Daha sonraki adımlarda, dosyayı harici bağımlılık bilgilerini ekleyecek şekilde 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
Apple cihazlar için uygulama oluşturmak üzere Bazel'in, GitHub deposundan en son Apple derleme kurallarını çekmesi gerekir. Bu özelliği 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ını tanımak için inceliyorsunuz. Bu eğitimi tamamlamak için kaynak dosyaları düzenlemeniz gerekmez.
BUILD dosyası oluşturma
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 ifadesini ekleyin
iOS hedeflerini oluşturmak için Bazel'in, derleme her çalıştığında GitHub deposundan derleme kurallarını yüklemesi gerekir. Bu kuralları projenizde kullanabilmek 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, öncelikle objc_library
kuralını kullanarak Bazel'e uygulama kaynak kodundan ve Xib dosyalarından statik kitaplık oluşturma talimatı vereceksiniz. Ardından, uygulama ikilisini ve .ipa
paketini nasıl oluşturacağını bildirmek 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ışına nasıl referans verdiğine dikkat edin.
Şimdi dosyayı kaydedip kapatın. BUILD
dosyanızı, GitHub deposunun main
dalındaki tamamlanmış örnekle karşılaştırabilirsiniz.
Uygulamayı oluşturup dağıtma
Artık uygulamanızı oluşturup simülatöre ve iOS cihazına 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 dalında yer alır. Ek yardım veya sorun giderme için çalışmanızı tamamlanmış dosyalarla karşılaştırabilirsiniz.
Uygulamayı simülatör için oluşturma
Mevcut çalışma dizininizin Bazel çalışma alanınızın içinde olduğ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ır ve oluşturur. 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 çıktı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 hatalarını ayıklama
Artık iOS Simülatörü'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ülatörü seçin ve Çalıştır'ı tıklayın.
Uygulamayı bir cihaz için oluşturma
Uygulamanızı bir iOS cihaza yüklenecek ve bu cihazda başlatılacak şekilde oluşturmak için Bazel'in söz konusu cihaz modeli için uygun sağlama profiline ihtiyacı vardır. Aşağıdakileri yapın:
Apple Geliştirici Hesabınıza gidin ve cihazınız için uygun sağlama profilini indirin. Daha fazla bilgi için Apple'ın belgelerini inceleyin.
Profilinizi
$WORKSPACE
içine 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 uygulamayı oluşturun:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
Bu işlem, uygulamayı kalın ikili olarak oluşturur. Belirli bir cihaz mimarisi için derleme yapmak istiyorsanız derleme seçeneklerinde bu mimariyi 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ü için derleme yapmak üzere --ios_sdk_version
seçeneğini kullanın. Çoğu senaryoda --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.
Ayrıca, komut satırı yerine GUI kullanarak uygulamanızı 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. Sol taraftaki listeden takılı cihazınızı seçin, ardından "Yüklü Uygulamalar" bölümünde 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üklenemiyorsa 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ılamıyorsa cihazınızın sağlama profilinizde yer aldığından emin olun. Xcode'daki Devices
ekranında bulunan View Device Logs
düğmesi, neyin yanlış gittiğiyle ilgili başka bilgiler sağlayabilir.
Daha fazla bilgi
Daha fazla bilgi için GitHub deposunun ana dalına bakın.