Khác với Android, trong quá trình phát triển, ứng dụng iOS không thể cài đặt trực tiếp lên thiết bị bởi cơ chế bảo mật và xác thực của Apple thông qua certificate và provisioning profile. Hiểu nôm na, để có thể triển khai ứng dụng, trước tiên, Apple sẽ sử dụng certificate để xác thực danh tính thông qua tài khoản Apple Developer. Sau đó, ứng dụng sẽ được chứng thực bởi provisioning profile (bằng cách đối chiếu thông tin trong provisioning profile với thông tin trong app).
Theo cơ chế này, mọi ứng dụng phải có tối thiểu một provisioning profile được dùng để “sign” app. Với mỗi dự án khác nhau, số lượng profile có thể dao động ít nhiều phụ thuộc vào mục đích và yêu cầu của dự án (scheme, build type và build mode). Không những vậy, trong dự án có nhiều thành viên, việc quản lí không chặt chẽ còn có thể xảy ra tình trạng “bùng nổ” certificate/profile, tạo ra nhiều certificate/profile không cần thiết, khiến việc đồng bộ giữa các thành viên gặp khó khăn.
Từ đây, câu hỏi đặt ra làm thế nào để quản lý certificate và provisioning profile một cách hiệu quả, tiết kiệm thời gian cài đặt và hạn chế những sai sót khi build?
Để trả lời câu hỏi này, hôm nay ta sẽ cùng tìm hiểu về Fastlane - một công cụ có khả năng tự động hóa quá trình code signing, giúp quản lý, chia sẻ và đồng bộ certificate/profile một cách dễ dàng.
Fastlane là một công cụ được xây dựng phục vụ cho mục đích tự động hóa những tác vụ thường gặp trong quá trình phát triển iOS và Android, như screenshot capture, code signing, beta deployment và store deployment.
Fastlane đem lại nhiều lợi ích và hiệu quả hơn so với việc cài đặt và sử dụng certificate/profile thông thường, bởi vì:
Trước khi bắt đầu tìm hiểu code signing với Fastlane, có một số lưu ý như sau:
Fastlane 2.210.1
Sau khi hoàn thành các bước chuẩn bị, giờ ta sẽ bắt đầu với Fastlane.
match
Match
là phương pháp được khuyến khích sử dụng bởi Fastlane bởi những đặc điểm sau:
- Đơn giản hóa quá trình code signing.
- Đồng bộ certificate/profile giữa các thành viên trong dự án.
- Hạn chế những sai sót thường gặp.
Đầu tiên, khởi tạo match bằng cách chạy lệnh sau:
fastlane match init
Fastlane sẽ đưa ra 4 lựa chọn để ta có thể chọn nơi lưu trữ certificate/profile, bao gồm:
Ở bước này, ta sẽ chọn nơi lưu trữ là Github (phương án 1). Khi đó, Fastlane sẽ yêu cầu URL của private repository để lưu trữ certificate/profile. Ta nhập URL của repo đó vào dưới dạng https
hoặc git
.
Fastlane sẽ tạo một file mới trong thư mục ./fastlane
là Matchfile
bao gồm những thông tin ta vừa nhập.
Ví dụ nội dung trong Matchfile
như sau:
git_url("https://github.com/username/storage-repo.git")storage_mode("git")
Sau khi khởi tạo match, ta chạy lệnh sau để bắt đầu quá trình code signing:
fastlane match development
Ở đây, tùy vào mục đích của dự án mà ta có thể thay option development
thành appstore
, adhoc
, enterprise
, developer_id
hoặc mac_installer_distribution
.
Trong quá trình chạy, Fastlane sẽ yêu cầu cung cấp những thông tin cần thiết, vì vậy cần đọc kĩ và điền đúng các thông tin tương ứng. Lưu ý, ở bước nhập Passphrase
cho Github repository, ta cần ghi nhớ thông tin này vì đây sẽ là password để có thể truy cập vào repository lấy certificate/profile để sử dụng match.
Sau khi hoàn thành, ta vào Github và Apple Developer để xem kết quả.
Ngoài lần chạy đầu tiên để khởi tạo, từ những lần sau, ta sẽ chạy match với option readonly
để tránh việc tạo mới nhiều certificate và profile.
fastlane match development --readonly
cert
và sigh
Mặc dù
match
được khuyến khích sử dụng trong hầu hết các trường hợp, Fastlane vẫn cung cấp một phương pháp thứ hai - sử dụngcert
vàsigh
- giúp can thiệp sâu hơn vào quá trình code signing. Từ đó có thể nắm được toàn bộ quá trình và tùy biến theo mục đích.
Để bắt đầu, ta sẽ chạy lệnh sau để khởi tạo certificate:
fastlane cert --development
Ở đây, ta dùng option development
phục vụ cho mục đích phát triển và kiểm thử. Bên cạnh đó, nếu dự án yêu cầu việc phân phối ứng dụng trên App Store, AdHoc hoặc Enterprise, ta sẽ dùng option distribution
.
Fastlane cert sẽ kiểm tra nếu certificate đã được cài đặt trong máy. Trong trường hợp chưa có, cert sẽ tạo một certificate mới và tự động cài đặt, import vào Keychain. Lưu ý, cert sẽ không “revoke” những certificate đã tồn tại hay tải certificate từ Apple Developer về máy, bởi vì quá trình tạo certificate cần đến private key, mà private key sẽ chỉ lưu trong máy của bạn thay vì chia sẻ cho mọi người.
Sau bước cài đặt certificate, ta sẽ tạo provisioning profile bằng lệnh:
fastlane sigh --development
Bên cạnh option development
, ta còn có những option khác như appstore
, adhoc
, enterprise
hay developer_id
. Mỗi option sẽ phục vụ cho từng mục đích khác nhau khi phân phối ứng dụng.
Lúc này, sigh sẽ khởi tạo và cài đặt provisioning profile từ Apple Developer về máy, đồng thời liên kết với certificate tương ứng và đảm bảo certificate đó vẫn còn hiệu lực.
Chỉ đơn giản như vậy, ta đã hoàn thành việc chuẩn bị certificate và provisioning profile cho một dự án iOS. Fastlane giúp tự động hóa quá trình code signing, tiết kiệm thời gian cài đặt và chuẩn bị cho dự án, đồng thời hạn chế tối đa những sai sót xảy ra khi đồng bộ certificate/profile giữa các thành viên.