Bazel Eğitimi: iOS Uygulaması Oluşturma

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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:

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

  2. Profilinizi $WORKSPACE içine 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",
    

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