Tutorial ini membahas cara mem-build aplikasi iOS sederhana menggunakan Bazel.
Yang akan Anda pelajari
Dalam tutorial ini, Anda akan mempelajari cara:
- Menyiapkan lingkungan dengan menginstal Bazel dan Xcode, serta mendownload project contoh
- Menyiapkan ruang kerja Bazel yang berisi kode sumber
untuk aplikasi dan file
WORKSPACEyang mengidentifikasi tingkat teratas direktori ruang kerja - Memperbarui file
WORKSPACEagar berisi referensi ke dependensi eksternal yang diperlukan - Membuat file
BUILD - Menjalankan Bazel untuk mem-build aplikasi untuk simulator dan perangkat iOS
- Menjalankan aplikasi di simulator dan di perangkat iOS
Menyiapkan lingkungan Anda
Untuk memulai, instal Bazel dan Xcode, lalu dapatkan project contoh.
Menginstal Bazel
Ikuti petunjuk penginstalan untuk menginstal Bazel dan dependensinya.
Menginstal Xcode
Download dan instal Xcode. Xcode berisi compiler, SDK, dan alat lain yang diperlukan oleh Bazel untuk mem-build aplikasi Apple.
Mendapatkan project contoh
Anda juga perlu mendapatkan project contoh untuk tutorial dari GitHub. Repo GitHub memiliki dua cabang: source-only dan main. Cabang source-only hanya berisi file sumber untuk project. Anda akan menggunakan file di cabang ini dalam tutorial ini. Cabang main berisi file sumber dan file WORKSPACE dan BUILD Bazel yang telah selesai. Anda dapat menggunakan file di cabang ini untuk memeriksa pekerjaan Anda setelah menyelesaikan langkah-langkah tutorial.
Masukkan perintah berikut di command line untuk mendapatkan file di cabang source-only:
cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples
Perintah git clone membuat direktori bernama $HOME/examples/. Direktori ini berisi beberapa project contoh untuk Bazel. File project untuk tutorial ini ada di $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 petunjuk yang digunakan Bazel untuk mem-build
software. Ruang kerja juga dapat berisi link simbolis ke direktori output.
Direktori ruang kerja dapat berada di mana saja di sistem file Anda dan ditandai dengan adanya file WORKSPACE di root-nya. Dalam tutorial ini, direktori ruang kerja Anda adalah $HOME/examples/tutorial/, yang berisi file project contoh yang Anda clone dari repo GitHub pada langkah sebelumnya.
Untuk memudahkan, tetapkan variabel lingkungan $WORKSPACE sekarang untuk merujuk ke direktori ruang kerja 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 direktori ruang kerja tingkat atas. File ini dapat kosong atau berisi referensi
ke dependensi eksternal yang diperlukan untuk mem-build
software.
Untuk saat ini, Anda akan membuat file WORKSPACE kosong, yang hanya berfungsi untuk mengidentifikasi direktori ruang kerja. Pada langkah-langkah berikutnya, Anda akan memperbarui file untuk menambahkan informasi dependensi eksternal.
Masukkan perintah berikut di command line:
touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE
Tindakan ini akan membuat dan membuka file WORKSPACE kosong.
Memperbarui file WORKSPACE
Untuk mem-build aplikasi untuk perangkat Apple, Bazel perlu mengambil aturan build Apple terbaru
dari repositori GitHub-nya. Untuk mengaktifkan hal ini, tambahkan aturan
git_repository
berikut ke file WORKSPACE Anda:
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 terletak di $WORKSPACE/ios-app/UrlGet. Sekali lagi, Anda hanya melihat file ini sekarang untuk memahami struktur aplikasi. Anda tidak perlu mengedit file sumber apa pun 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 mem-build target iOS, Bazel perlu memuat aturan build dari repositori GitHub-nya setiap kali build berjalan. Untuk membuat 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 aturan objc_library di-build ke dalam paket Bazel.
Menambahkan aturan objc_library
Bazel menyediakan beberapa aturan build yang dapat Anda gunakan untuk mem-build aplikasi untuk platform iOS. Untuk tutorial ini, Anda akan menggunakan aturan
objc_library terlebih dahulu untuk memberi tahu Bazel
cara mem-build library statis dari kode sumber aplikasi dan file Xib. Kemudian
Anda akan menggunakan aturan
ios_application
untuk memberi tahu cara mem-build 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
Aturan
ios_application
mem-build 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 bagaimana atribut deps mereferensikan output aturan UrlGetClasses yang Anda tambahkan ke file BUILD di atas.
Sekarang, simpan dan tutup file. Anda dapat membandingkan file BUILD dengan
contoh yang telah selesai
di cabang main repo GitHub.
Membangun dan men-deploy aplikasi
Sekarang Anda siap mem-build aplikasi dan men-deploy-nya ke simulator dan ke perangkat iOS.
Aplikasi yang di-build terletak di direktori $WORKSPACE/bazel-bin.
File WORKSPACE dan BUILD yang telah selesai untuk tutorial ini terletak di
cabang utama
repo GitHub. Anda dapat membandingkan pekerjaan Anda dengan file yang telah selesai untuk mendapatkan bantuan atau pemecahan masalah tambahan.
Mem-build aplikasi untuk simulator
Pastikan direktori kerja Anda saat ini berada di dalam ruang kerja Bazel:
cd $WORKSPACE
Sekarang, masukkan perintah berikut untuk mem-build aplikasi contoh:
bazel build //ios-app:ios-app
Bazel diluncurkan dan mem-build aplikasi contoh. Selama proses build, outputnya akan terlihat mirip dengan berikut ini:
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 terletak di direktori $WORKSPACE/bazel-bin/ios-app.
Menjalankan dan men-debug aplikasi di simulator
Sekarang Anda dapat menjalankan aplikasi dari Xcode menggunakan iOS Simulator. Pertama, buat project Xcode menggunakan Tulsi.
Kemudian, buka project di Xcode, pilih iOS Simulator sebagai skema runtime, lalu klik Run.
Mem-build aplikasi untuk perangkat
Untuk mem-build aplikasi agar dapat diinstal dan diluncurkan di perangkat iOS, Bazel memerlukan profil provisi yang sesuai untuk model perangkat tersebut. Lakukan hal berikut:
Buka Akun Developer Apple Anda dan download profil provisi yang sesuai untuk perangkat Anda. Lihat dokumentasi Apple untuk mengetahui informasi selengkapnya.
Pindahkan profil Anda ke
$WORKSPACE.(Opsional) Tambahkan profil Anda ke file
.gitignore.Tambahkan baris berikut ke target
ios_applicationdi fileBUILDAnda:provisioning_profile = "<your_profile_name>.mobileprovision",
Sekarang, build aplikasi untuk perangkat Anda:
bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64
Tindakan ini akan mem-build aplikasi sebagai biner gemuk. Untuk mem-build untuk arsitektur perangkat tertentu, tentukan arsitektur tersebut dalam opsi build.
Untuk mem-build untuk versi Xcode tertentu, gunakan opsi --xcode_version. Untuk mem-build untuk versi SDK tertentu, gunakan opsi --ios_sdk_version. Opsi --xcode_version sudah cukup dalam sebagian besar skenario.
Untuk menentukan versi iOS minimum yang diperlukan, tambahkan parameter minimum_os_version ke aturan build ios_application di file BUILD Anda.
Anda juga dapat menggunakan Tulsi untuk mem-build aplikasi menggunakan GUI, bukan command line.
Menginstal aplikasi di perangkat
Cara termudah untuk menginstal aplikasi di perangkat adalah dengan meluncurkan Xcode dan menggunakan perintah
Windows > Devices. Pilih perangkat yang terhubung dari daftar di sebelah kiri, lalu tambahkan aplikasi dengan mengklik tombol Add (tanda plus) di bagian "Installed Apps" dan memilih file .ipa yang Anda build.
Jika aplikasi gagal diinstal di perangkat Anda, pastikan Anda menentukan profil provisi yang benar di file BUILD Anda (langkah 4 di bagian sebelumnya).
Jika aplikasi gagal diluncurkan, pastikan perangkat Anda adalah bagian dari profil provisi Anda. Tombol View Device Logs di layar Devices di Xcode dapat memberikan informasi lain tentang masalah yang terjadi.
Bacaan lebih lanjut
Untuk mengetahui detail selengkapnya, lihat cabang utama repo GitHub.