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:
Buka Apple Developer Account Anda dan mendownload profil penyediaan yang sesuai untuk perangkat Anda. Lihat Dokumentasi Apple untuk informasi selengkapnya.
Pindahkan profil Anda ke
$WORKSPACE
.(Opsional) Tambahkan profil Anda ke file
.gitignore
.Tambahkan baris berikut ke target
ios_application
di 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 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.