Bu eğiticide, 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şturun- Simülatör uygulaması ve bir iOS cihaz için Bazel'ı çalıştırın
- Uygulamayı simülatörde ve bir 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'ı yükle
Bazel ve bağımlılıklarını yüklemek için yükleme talimatlarını uygulayın.
Xcode'u yükleyin
Xcode'u indirip yükleyin. Xcode, Apple uygulamaları oluşturmak için Bazel'in ihtiyaç duyduğu 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.
source-only
dalındaki dosyaları almak için komut satırına aşağıdaki komutu girin:
cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples
git clone
komutu, $HOME/examples/
adında bir dizin oluşturur. Bu dizin, Bazel için birkaç örnek proje içerir. Bu eğitimdeki proje dosyaları $HOME/examples/tutorial/ios-app
dosyasındadır.
Çalışma alanı oluşturma
Çalışma alanı, bir veya daha fazla yazılım projesinin kaynak dosyalarının yanı sıra Bazel'ın yazılımı oluşturmak için kullandığı talimatları içeren WORKSPACE
ve BUILD
dosyalarını içeren bir dizindir. Çalışma alanı, çıkış dizinlerinin sembolik bağlantıları da içerebilir.
Çalışma alanı dizini, dosya sisteminizin herhangi bir yerinde bulunabilir. Bu dizin, WORKSPACE
dosyasının kök dizininde bulunmasıyla belirtilir. Bu eğiticide, çalışma alanı dizininiz, önceki adımda GitHub deposundan klonladığınız örnek proje dosyalarını içeren $HOME/examples/tutorial/
dizinidir.
Size kolaylık olması için $WORKSPACE
ortam değişkenini, Workspace dizininize referans verecek şekilde ayarlayın. Komut satırına şu komutu girin:
export WORKSPACE=$HOME/examples/tutorial
WORKSPACE dosyası oluşturma
Her çalışma alanının, üst düzey Workspace dizininde yer alan WORKSPACE
adlı bir metin dosyası olmalıdır. Bu dosya boş olabilir veya yazılımı oluşturmak için gereken harici bağımlılıklara referanslar içeriyor olabilir.
Şimdilik, yalnızca çalışma alanı dizinini tanımlamaya yarayan boş bir WORKSPACE
dosyası oluşturacaksınız. Sonraki adımlarda, dosyayı dış bağımlılık bilgilerini ekleyecek şekilde güncelleyeceksiniz.
Komut satırına aşağıdaki komutu girin:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
Bu işlem, boş WORKSPACE
dosyası oluşturur ve açar.
WORKSPACE dosyasını güncelleme
Apple cihazlara yönelik uygulamalar derlemek için Bazel'ın, GitHub deposundan en son Apple derleme kurallarını çekmesi 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
Uygulamanın $WORKSPACE/ios-app/UrlGet
konumunda bulunan kaynak dosyalarına göz atın. Yine, uygulamanın yapısını tanımak için şu anda sadece bu dosyalara bakarsınız. Bu eğiticiyi tamamlamak için kaynak dosyaların hiçbirini 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
Derleme her çalıştırıldığında, iOS hedefleri oluşturmak için Bazel'ın, derleme kurallarını GitHub deposundan 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 paketinde yerleşik olduğundan yalnızca ios_application
kuralını yüklemeniz gerekir.
objc_library kuralı ekle
Bazel, iOS platformuna yönelik uygulama derlemek için kullanabileceğiniz çeşitli derleme kuralları sağlar. Bu eğitimde, önce objc_library
kuralını kullanarak Bazel'a uygulama kaynak kodundan ve Xib dosyalarından nasıl statik kitaplık oluşturacağını bildireceksiniz. Ardından uygulama ikili programını ve .ipa
paketini nasıl oluşturacağınızı 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 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ıdaki BUILD
dosyasına eklediğiniz UrlGetClasses
kuralının çıkışını nasıl referans gösterdiğini unutmayın.
Şimdi dosyayı kaydedin ve kapatın. BUILD
dosyanızı, GitHub deposunun main
dalındaki tamamlanmış örnekle karşılaştırabilirsiniz.
Uygulamayı derleme ve dağıtma
Artık uygulamanızı derlemeye, bir simülatöre ve iOS cihaza dağıtmaya hazırsınız.
Yerleşik uygulama $WORKSPACE/bazel-bin
dizininde bulunur.
Bu eğitim için tamamlanan WORKSPACE
ve BUILD
dosyaları, GitHub deposunun ana dalında bulunmaktadır. Ek 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ızın içinde 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ır ve oluşturur. Derleme işlemi sırasında uygulamanın çıkışı 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 çıktı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 uygulamayı iOS Simülatörü'nü kullanarak 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.
Bir cihaz için uygulama oluşturun
Uygulamanızı bir iOS cihaza yüklenecek ve 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ırlık profilini indirin. Daha fazla bilgi için Apple'ın belgelerine bakın.
Profilinizi
$WORKSPACE
adlı kuruluşa 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 uygulamayı derleyin:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
Bu, uygulamayı kalın bir ikili program yapar. Belirli bir cihaz mimarisi için 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ü için geliştirme yapmak istiyorsanız --ios_sdk_version
seçeneğini kullanın. Çoğu senaryoda --xcode_version
seçeneği yeterlidir.
Gereken 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"ın altındaki Ekle (artı işareti) düğmesini tıklayıp oluşturduğunuz .ipa
dosyasını seçin.
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 4. adım).
Uygulamanız başlatılamazsa cihazınızın temel hazırlık profilinizin bir parçası olduğundan emin olun. Xcode'da, 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 göz atın.