Bazel Eğitimi: iOS Uygulaması Oluşturma

Sorun bildirme Kaynağı görüntüleme Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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üncelleyin
  • BUILD 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:

  1. 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.

  2. Profilinizi $WORKSPACE'e taşıyın.

  3. (İsteğe bağlı) Profilinizi .gitignore dosyanıza ekleyin.

  4. BUILD dosyanızdaki ios_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.