Tutorial Bazel: Mem-build Aplikasi iOS

Laporkan masalah Lihat sumber Per Malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Tutorial ini membahas cara membuat aplikasi iOS sederhana menggunakan Bazel.

Yang akan Anda pelajari

Dalam tutorial ini, Anda akan mempelajari cara:

  • Siapkan lingkungan dengan menginstal Bazel dan Xcode, dan mengunduh project contoh
  • Siapkan ruang kerja Bazel yang berisi kode sumber untuk aplikasi dan file WORKSPACE yang mengidentifikasi tingkat atas direktori workspace
  • Perbarui file WORKSPACE agar berisi referensi ke yang diperlukan dependensi eksternal
  • Membuat file BUILD
  • Jalankan Bazel untuk membangun aplikasi bagi simulator dan perangkat iOS
  • Menjalankan aplikasi di simulator dan di perangkat iOS

Menyiapkan lingkungan Anda

Untuk memulai, instal Bazel dan Xcode, lalu dapatkan project contohnya.

Instal Bazel

Ikuti petunjuk pemasangan untuk menginstal Bazel dan dependensinya.

Menginstal Xcode

Download dan instal Xcode. Xcode berisi compiler, SDK, dan alat lain yang diperlukan oleh Bazel untuk membangun aplikasi Apple.

Mendapatkan contoh project

Anda juga perlu mendapatkan project contoh untuk tutorial dari GitHub. GitHub repo memiliki dua cabang: source-only dan main. Cabang source-only berisi file sumber untuk proyek saja. Anda akan menggunakan file di dalam tutorial ini. Cabang main berisi kedua file sumber dan menyelesaikan file WORKSPACE dan BUILD Bazel. Anda dapat menggunakan file di untuk memeriksa pekerjaan Anda setelah menyelesaikan langkah-langkah tutorial.

Masukkan perintah berikut pada command line untuk mendapatkan file di source-only cabang:

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

Perintah git clone membuat direktori bernama $HOME/examples/. Ini berisi beberapa proyek contoh untuk Bazel. File project untuk ini tutorial ini akan tersedia dalam $HOME/examples/tutorial/ios-app.

Menyiapkan ruang kerja

Ruang kerja adalah direktori yang berisi file sumber untuk satu atau beberapa project software, serta file WORKSPACE dan file BUILD yang berisi instruksi yang digunakan Bazel untuk membuat software tersebut. Ruang kerja juga dapat berisi link simbolis ke output direktori.

Direktori {i>workspace<i} dapat ditempatkan di mana saja di sistem file Anda dan dilambangkan dengan adanya file WORKSPACE di root-nya. Dalam tutorial ini, direktori workspace adalah $HOME/examples/tutorial/, yang berisi contoh file project yang Anda clone dari repo GitHub di langkah sebelumnya.

Untuk memudahkan Anda, tetapkan variabel lingkungan $WORKSPACE sekarang untuk merujuk ke direktori Workspace Anda. Di command line, masukkan:

export WORKSPACE=$HOME/examples/tutorial

Membuat file WORKSPACE

Setiap ruang kerja harus memiliki file teks bernama WORKSPACE yang terletak di tingkat teratas Workspace. File ini mungkin kosong atau berisi referensi pada dependensi eksternal yang diperlukan untuk membuat {i>software<i}.

Untuk saat ini, Anda akan membuat file WORKSPACE kosong, yang hanya berfungsi untuk mengidentifikasi direktori ruang kerja. Pada langkah berikutnya, Anda akan memperbarui file untuk menambahkan informasi dependensi eksternal.

Masukkan perintah berikut pada command line:

touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE

Tindakan ini akan membuat dan membuka file WORKSPACE kosong.

Perbarui file WORKSPACE

Agar dapat membangun aplikasi untuk perangkat Apple, Bazel perlu menggunakan Aturan build Apple dari repositori GitHub-nya. Untuk mengaktifkannya, tambahkan kode berikut git_repository aturan ke file WORKSPACE:

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",
)

Meninjau file sumber

Lihat file sumber untuk aplikasi yang berada di $WORKSPACE/ios-app/UrlGet. Sekali lagi, sekarang Anda hanya melihat file ini untuk menjadi terbiasa dengan struktur aplikasi. Anda tidak perlu mengedit file sumber untuk menyelesaikan tutorial ini.

Membuat file BUILD

Di perintah command line, buka file BUILD baru untuk diedit:

touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD

Menambahkan pernyataan pemuatan aturan

Untuk membangun target iOS, Bazel perlu memuat aturan build dari repositori GitHub-nya kapan pun build berjalan. Agar aturan ini tersedia untuk project Anda, tambahkan pernyataan pemuatan berikut ke awal file BUILD Anda:

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

Anda hanya perlu memuat aturan ios_application karena objc_library standar yang diintegrasikan ke dalam paket Bazel.

Menambahkan aturan objc_library

Bazel menyediakan beberapa aturan build yang bisa Anda gunakan untuk membuat aplikasi di platform iOS. Untuk tutorial ini, pertama-tama Anda akan menggunakan Aturan objc_library untuk memberi tahu Bazel cara membangun pustaka statis dari kode sumber aplikasi dan file Xib. Selanjutnya Anda akan menggunakan ios_application aturan untuk memberi tahu cara membangun biner aplikasi dan paket .ipa.

Tambahkan baris berikut ke file BUILD Anda:

objc_library(
    name = "UrlGetClasses",
    srcs = [
         "UrlGet/AppDelegate.m",
         "UrlGet/UrlGetViewController.m",
         "UrlGet/main.m",
    ],
    hdrs = glob(["UrlGet/*.h"]),
    data = ["UrlGet/UrlGetViewController.xib"],
)

Perhatikan nama aturan, UrlGetClasses.

Menambahkan aturan ios_application

Tujuan ios_application aturan membangun biner aplikasi dan membuat file paket .ipa.

Tambahkan baris berikut ke file BUILD Anda:

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"],
)

Perhatikan cara atribut deps mereferensikan output aturan UrlGetClasses yang Anda tambahkan ke file BUILD di atas.

Sekarang, simpan dan tutup {i>file<i}. Anda dapat membandingkan file BUILD dengan contoh lengkap di cabang main dari repo GitHub.

Membangun dan men-deploy aplikasi

Anda kini siap membangun aplikasi dan men-deploy-nya ke simulator dan di perangkat iOS.

Aplikasi yang dibangun terletak di direktori $WORKSPACE/bazel-bin.

File WORKSPACE dan BUILD yang telah selesai untuk tutorial ini dapat ditemukan di cabang utama dari repo GitHub. Anda dapat membandingkan pekerjaan Anda dengan file yang telah selesai untuk bantuan tambahan atau pemecahan masalah.

Membangun aplikasi untuk simulator

Pastikan direktori kerja Anda saat ini berada di dalam ruang kerja Bazel Anda:

cd $WORKSPACE

Sekarang, masukkan kode berikut untuk membangun aplikasi contoh:

bazel build //ios-app:ios-app

Bazel meluncurkan dan membangun aplikasi contoh. Selama proses build, outputnya akan tampak seperti berikut:

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

Menemukan output build

File .ipa dan output lainnya berada di Direktori $WORKSPACE/bazel-bin/ios-app.

Menjalankan dan men-debug aplikasi di simulator

Kini Anda dapat menjalankan aplikasi dari Xcode menggunakan Simulator iOS. Pertama, membuat project Xcode menggunakan Tulsi.

Kemudian, buka project di Xcode, pilih Simulator iOS sebagai skema runtime, lalu klik Run.

Membangun aplikasi untuk perangkat

Untuk membuat aplikasi agar dapat diinstal dan diluncurkan di perangkat iOS, Bazel memerlukan profil penyediaan yang sesuai untuk model perangkat itu. Lakukan hal berikut:

  1. Buka Apple Developer Account Anda dan mendownload profil penyediaan yang sesuai untuk perangkat Anda. Lihat Dokumentasi Apple untuk informasi selengkapnya.

  2. Pindahkan profil Anda ke $WORKSPACE.

  3. (Opsional) Tambahkan profil Anda ke file .gitignore.

  4. Tambahkan baris berikut ke target ios_application di file BUILD Anda:

    provisioning_profile = "<your_profile_name>.mobileprovision",
    

Sekarang, bangun aplikasi untuk perangkat Anda:

bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64

Tindakan ini akan membuat aplikasi sebagai biner lemak. Untuk membangun aplikasi untuk perangkat tertentu arsitektur aplikasi, tetapkan dalam opsi build.

Untuk membangun versi Xcode tertentu, gunakan opsi --xcode_version. Kepada untuk versi SDK tertentu, gunakan opsi --ios_sdk_version. Tujuan Opsi --xcode_version sudah cukup untuk sebagian besar skenario.

Untuk menentukan versi iOS minimum yang diperlukan, tambahkan minimum_os_version ke aturan build ios_application di file BUILD Anda.

Anda juga dapat menggunakan Tulsi ke membangun aplikasi Anda menggunakan GUI, bukan baris perintah.

Menginstal aplikasi di perangkat

Cara termudah untuk menginstal aplikasi di perangkat adalah dengan menjalankan Xcode dan menggunakan Perintah Windows > Devices. Pilih perangkat yang dicolokkan dari daftar di kiri, lalu tambahkan aplikasi dengan mengklik tombol Add (tanda plus) di bawah "Aplikasi Terinstal" dan memilih file .ipa yang telah Anda bangun.

Jika aplikasi Anda gagal diinstal di perangkat, pastikan Anda menentukan profil penyediaan yang benar di file BUILD Anda (langkah 4 pada langkah sebelumnya ).

Jika aplikasi gagal diluncurkan, pastikan perangkat Anda merupakan bagian dari untuk profil penyediaan resource. Tombol View Device Logs pada layar Devices di Xcode mungkin memberikan informasi lain tentang masalah yang terjadi.

Bacaan lebih lanjut

Untuk detail selengkapnya, lihat cabang utama dari repo GitHub.