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, lalu mendownload project contoh
- Siapkan ruang kerja Bazel yang berisi kode sumber
untuk aplikasi dan file
WORKSPACE
yang mengidentifikasi tingkat teratas direktori ruang kerja - Perbarui file
WORKSPACE
agar berisi referensi ke dependensi eksternal yang diperlukan - Buat file
BUILD
- Jalankan Bazel untuk membangun 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 membangun 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 Bazel WORKSPACE
dan BUILD
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
akan 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 membangun
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 repositori GitHub pada langkah sebelumnya.
Untuk mempermudah, 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 berada di direktori ruang kerja tingkat teratas. File ini mungkin kosong atau berisi referensi ke dependensi eksternal yang diperlukan untuk membangun software.
Untuk saat ini, Anda akan membuat file WORKSPACE
kosong, yang hanya berfungsi untuk
mengidentifikasi direktori ruang kerja. Pada langkah-langkah selanjutnya, 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.
Perbarui file WORKSPACE
Untuk membangun aplikasi bagi perangkat Apple, Bazel perlu menarik
aturan build Apple
terbaru dari repositori GitHub-nya. Untuk mengaktifkannya, 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 berada 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 command prompt, buka file BUILD
baru untuk diedit:
touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD
Tambahkan pernyataan pemuatan aturan
Untuk membangun target iOS, Bazel perlu memuat aturan build dari repositori GitHub-nya setiap kali build berjalan. Untuk membuat aturan ini tersedia di project Anda, tambahkan
pernyataan pemuatan berikut di 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
sudah ada 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 membuat library statis dari kode sumber aplikasi dan file Xib. Kemudian, Anda akan menggunakan aturan ios_application
untuk memberi tahu cara membuat biner aplikasi dan bundle .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
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 file tersebut. Anda dapat membandingkan file BUILD
dengan
contoh yang sudah selesai
di cabang main
dari 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 dibuat terletak di direktori $WORKSPACE/bazel-bin
.
File WORKSPACE
dan BUILD
yang telah selesai untuk tutorial ini berada di
cabang utama
repositori GitHub. Anda dapat membandingkan pekerjaan Anda dengan file yang telah selesai untuk mendapatkan bantuan atau pemecahan masalah tambahan.
Membangun aplikasi untuk simulator
Pastikan direktori kerja Anda saat ini berada di dalam ruang kerja Bazel Anda:
cd $WORKSPACE
Sekarang, masukkan perintah berikut untuk mem-build aplikasi contoh:
bazel build //ios-app:ios-app
Bazel meluncurkan 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 Simulator iOS. Pertama, buat project Xcode menggunakan Tulsi.
Kemudian, buka project di Xcode, pilih iOS Simulator 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 tersebut. Lakukan hal berikut:
Buka Akun Developer Apple Anda, lalu download profil penyediaan 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_application
dalam fileBUILD
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 mem-build aplikasi sebagai binary gemuk. Untuk membuat build untuk arsitektur perangkat tertentu, tetapkan arsitektur tersebut dalam opsi build.
Untuk membuat versi untuk Xcode tertentu, gunakan opsi --xcode_version
. Untuk
membangun 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
dalam file BUILD
Anda.
Anda juga dapat menggunakan Tulsi untuk membangun 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 dicolokkan dari daftar di sebelah kiri, lalu tambahkan aplikasi dengan mengklik tombol Tambahkan (tanda plus) di bagian "Aplikasi Terinstal" dan memilih file .ipa
yang Anda buat.
Jika aplikasi Anda gagal diinstal di perangkat, pastikan Anda menentukan
profil penyediaan yang benar dalam file BUILD
(langkah 4 di bagian
sebelumnya).
Jika aplikasi Anda gagal diluncurkan, pastikan perangkat Anda adalah bagian dari profil penyediaan Anda. Tombol View Device Logs
di layar Devices
di
Xcode dapat memberikan informasi lain tentang apa yang salah.
Bacaan lebih lanjut
Untuk mengetahui detail selengkapnya, lihat cabang utama di repositori GitHub.