Bazel Eğitimi: iOS Uygulaması Oluşturma

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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:

  • Ortamı ayarlamak için Bazel ve Xcode'u yükleyip örnek proje
  • Kaynak kodunu içeren bir Bazel çalışma alanı oluşturma ve üst düzeyini tanımlayan bir WORKSPACE dosyası için workspace dizini
  • WORKSPACE dosyasını, gerekli referansları içerecek şekilde güncelleyin. dış bağımlılıklar
  • BUILD 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 yüklemek için yükleme talimatlarını uygulayın ve ve bağımlılıklarını fark edebilirsiniz.

Xcode'u yükle

Xcode'u indirip yükleyin. Xcode, derleme için Bazel'ın gerektirdiği derleyicileri, SDK'ları ve diğer araçları içerir Apple uygulamaları.

Örnek projeyi alma

Ayrıca, GitHub'dan eğitim için örnek projeyi almanız gerekir. GitHub kod deposunun iki dalı vardır: source-only ve main. source-only dalı , yalnızca projenin kaynak dosyalarını içerir. Bu klasördeki dosyaları kullanacaksınız dalını bu eğiticide bulabilirsiniz. main dalı, hem kaynak dosyaları hem de ve Bazel WORKSPACE ile BUILD dosyalarını tamamladık. Bu klasördeki dosyaları kullanabilirsiniz şu bölümü kullanarak eğitim adımlarını tamamladığınızda çalışmanızı kontrol edebilirsiniz.

source-only içindeki dosyaları almak için komut satırına aşağıdakini girin. dal:

cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples

git clone komutu $HOME/examples/ adlı bir dizin oluşturur. Bu dizini Bazel için birkaç örnek proje içerir. Bunun için proje dosyaları $HOME/examples/tutorial/ios-app dilindedir.

Çalışma alanı oluşturma

Çalışma alanı, şunu içeren bir dizindir: bir veya daha fazla yazılım projesinin kaynak dosyalarını ve ayrıca bir WORKSPACE dosyası ve Bazel'in projeyi derlemek için kullandığı talimatları içeren BUILD dosyaları geri dönelim. Çalışma alanı ayrıca çıkışa ilişkin sembolik bağlantılar da içerebilir dizin oluşturabilirsiniz.

Çalışma alanı dizini, dosya sisteminizin herhangi bir yerinde bulunabilir ve kökünde WORKSPACE dosyasının varlığına işaret eder. Bu eğitimde çalışma alanı dizini, örneği içeren $HOME/examples/tutorial/ önceki adımda GitHub deposundan klonladığınız proje dosyalarını bulmanız gerekir.

Size kolaylık olması için $WORKSPACE ortam değişkenini çalışma alanı dizininiz nedir? Komut satırına şu kodu girin:

export WORKSPACE=$HOME/examples/tutorial

WORKSPACE dosyası oluşturun

Her çalışma alanının en üst düzeyinde WORKSPACE adlı bir metin dosyası olmalıdır workspace Directory'ye gidin. Bu dosya boş veya referans içeriyor olabilir oluşturmak için gerekli olan dış bağımlılıklara daha fazla bilgi edineceksiniz.

Şimdilik, boş bir WORKSPACE dosyası oluşturacaksınız. Bu dosya çalışma alanı dizinini tanımlar. Sonraki adımlarda dosyayı güncelleyip dış bağımlılık bilgilerini içerebilir.

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

Bazel'in, Apple cihazlara yönelik uygulamalar geliştirmek için en yeni Apple derleme kuralları kendi GitHub deposundan Bunu etkinleştirmek için aşağıdakileri ekleyin git_repository kuralları WORKSPACE dosyanıza 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 şurada bulunan kaynak dosyalarına göz atın: $WORKSPACE/ios-app/UrlGet Daha önce bahsettiğimiz gibi, uygulamanın yapısına aşinalık kazanın. Hiçbirini düzenlemeniz gerekmez kaynak dosyalarını da kullanabilirsiniz.

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

Bazel'in, iOS hedefleri oluşturmak için GitHub deposundan derleme kurallarını yüklemesi gerekiyor derlemenizi sağlar. Bu kuralları projenizde kullanılabilir hale getirmek için şu yük ifadesini BUILD dosyanızın başına ekleyin:

load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")

objc_libraryios_application kuralının Bazel paketinde yerleşik olarak bulunduğundan emin olun.

objc_library kuralı ekleme

Bazel, iOS platformu. Bu eğitim için ilk olarak Bazel'a haber vermek için objc_library kuralı uygulama kaynak kodundan ve Xib dosyalarından statik kitaplık oluşturmayı öğreneceğiz. Sonra kullanmak istediğiniz ios_application kuralı ile uygulama ikili programının ve .ipa paketinin nasıl oluşturulacağını bildirir.

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

İlgili içeriği oluşturmak için kullanılan ios_application kuralı, uygulama ikili programını 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, UrlGetClasses kuralının çıkışına nasıl başvurduğunu unutmayın. yukarıdaki BUILD dosyasına eklediniz.

Şimdi dosyayı kaydedin ve kapatın. BUILD dosyanızı, tamamlanan örnek gidin.main

Uygulamayı derleme ve dağıtma

Artık uygulamanızı derlemeye ve bir simülatöre ve iOS cihaz.

Derlenen uygulama, $WORKSPACE/bazel-bin dizininde bulunuyor.

Bu eğitim için tamamlanan WORKSPACE ve BUILD dosyaları şu konumda bulunmaktadır: ana dal bir parçası olacak. Çalışmanızı, şu kitabın tamamlanmış dosyalarıyla karşılaştırabilirsiniz: ek yardım veya sorun giderme.

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 derler. Derleme işlemi sırasında şuna benzer bir çıkış görürsünüz:

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

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. İlk olarak, Tulsi kullanarak bir Xcode projesi oluşturabilirsiniz.

Sonra, 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 modeli için uygun temel hazırlık profiline gidin. Aşağıdakileri yapın:

  1. Apple Geliştirici Hesabınıza gidin. ve cihazınıza uygun temel hazırlık profilini indirin. Görüntüleyin Apple'ın belgeleri konulu videomuzu izleyin.

  2. Profilinizi $WORKSPACE hizmetine taşıyın.

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

  4. Aşağıdaki satırı BUILD dosyanızdaki ios_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 için geliştirme bunu derleme seçeneklerinde belirtin.

Belirli bir Xcode sürümü için derleme yapmak istiyorsanız --xcode_version seçeneğini kullanın. Alıcı: özel bir SDK sürümü oluşturmak için --ios_sdk_version seçeneğini kullanın. İlgili içeriği oluşturmak için kullanılan Çoğu durumda --xcode_version seçeneği yeterlidir.

Gerekli minimum iOS sürümünü belirtmek için minimum_os_version ekleyin parametresini BUILD dosyanızdaki ios_application derleme kuralına ekleyin.

Ayrıca şunu da kullanabilirsiniz: Tulsi - uygulamanızı komut satırı yerine GUI kullanarak derleyin.

Uygulamayı bir cihaza yükleme

Uygulamayı cihaza yüklemenin en kolay yolu Xcode'u başlatmak ve Windows > Devices komutudur. Aşağıdaki listeden, takılan cihazınızı seçin sol tıklayın ve ardından altındaki Ekle (artı işareti) düğmesini tıklayarak uygulamayı ekleyin "Yüklü Uygulamalar" oluşturduğunuz .ipa dosyasını seçebilirsiniz.

Uygulamanız cihazınıza yüklenemezse aşağıdakileri belirttiğinizden emin olun: BUILD dosyanızdaki temel hazırlık profilini doğru doğrulayın (önceki önceki adım bölümüne bakın).

Uygulamanız başlatılamazsa cihazınızın temel hazırlık profilinin. Devices ekranındaki View Device Logs düğmesi Xcode, yaşanan sorunla ilgili başka bilgiler de sağlayabilir.

Daha fazla bilgi

Daha fazla bilgi için bkz. ana dal bir parçası olacak.