1. Trước khi bắt đầu
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng tính năng Phân phối ứng dụng Firebase và trình bổ trợ fastlane của công cụ này để phân phối ứng dụng iOS cho người kiểm thử, thu thập UDID của thiết bị kiểm thử và đăng ký chúng vào hồ sơ cấp phép của ứng dụng. Nhờ đó, bạn có thể nhanh chóng đưa bản dựng Ad Hoc đến với người kiểm thử tay.
Kiến thức bạn sẽ học được
- Cách tải lên và phân phối ứng dụng iOS phát hành trước (Ad Hoc) cho người thử nghiệm bằng tính năng Phân phối ứng dụng Firebase và fastlane (Phân phối ứng dụng Firebase).
- Cách đăng ký làm người kiểm thử và tải ứng dụng đã phân phối xuống thiết bị kiểm thử.
- Cách nhanh chóng đăng ký thiết bị thử nghiệm bằng cách xuất UDID của thiết bị thử nghiệm bằng trình bổ trợ fastlane của tính năng Phân phối ứng dụng.
- Cách cập nhật hồ sơ cấp phép của ứng dụng và tải ứng dụng lên lại để phân phối.
Bạn cần có
- Tài khoản Google
- Máy Apple đã cài đặt XCode 11.7 trở lên
- Ứng dụng iOS phát hành trước Ad Hoc được tạo trong Xcode
- Tài khoản nhà phát triển Apple có trả phí
- Một thiết bị iOS thực để thử nghiệm.
Ứng dụng trình mô phỏng iOS sẽ hoạt động trong hầu hết lớp học lập trình, nhưng trình mô phỏng không thể tải bản phát hành xuống.
Bạn vẫn có thể xác minh rằng thiết lập đã hoạt động bằng cách xác minh nút "Tải xuống" sẽ xuất hiện trên ứng dụng web của công cụ kiểm thử Phân phối ứng dụng.
2. Bắt đầu
Thiết lập cách nhanh chóng
Tính năng Phân phối ứng dụng tích hợp với fastlane (nhanh chóng) để cho phép bạn tự động hoá việc phân phối các bản dựng trước khi phát hành của ứng dụng. Tính năng Phân phối ứng dụng tích hợp với cấu hình cách nhanh chóng.
- Cài đặt và thiết lập fastlane.
- Chạy
fastlane init
trong thư mục gốc của dự án trong quá trình thiết lập rồi chọn "Thiết lập thủ công". Bạn sẽ thấy một thư mục con có tên làfastlane
, trong đó chứaFastfile
,Appfile
vàPluginfile
. Bạn sẽ dùng các thư mục này để định cấu hình lái nhanh.
Cài đặt Firebase CLI
Bạn cũng sẽ cần cài đặt Firebase CLI. Nếu đang sử dụng macOS hoặc Linux, bạn có thể chạy lệnh cURL sau:
curl -sL https://firebase.tools | bash
Nếu bạn đang sử dụng Windows, hãy đọc hướng dẫn cài đặt để tải tệp nhị phân độc lập hoặc cài đặt qua npm
.
Sau khi bạn cài đặt CLI, việc chạy firebase --version
sẽ báo cáo phiên bản 12.0.0
trở lên:
$ firebase --version 12.0.0
3. Xây dựng ứng dụng bằng tua nhanh
Xây dựng ứng dụng
- Đặt một số biến toàn cục cho lệnh fastlane (nhanh) trong
./fastlane/Appfile.
bao gồm mã ứng dụng và ID Apple của bạn:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- Tạo làn đường đầu tiên và sử dụng hành động nhanh chóng
build_app
(còn gọi làgym
) để tạo ứng dụng bằng cách thêm đoạn mã sau vào./fastlane/Fastfile
:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- Ký ứng dụng để phân phối.
Đối với lớp học lập trình này, bạn sẽ quản lý chứng chỉ và hồ sơ của riêng mình bằng cách sử dụng get_certificates
(còn gọi là cert
). Thao tác này giúp tạo các chứng chỉ ký trên thiết bị và lưu trữ mọi thứ trong macOS Keychain. Tuy nhiên, thông thường, bạn nên sử dụng fastlane sync_code_signing action
(còn gọi là match
) để quản lý hồ sơ và chứng chỉ ký mã của nhóm một cách an toàn.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- Thiết lập hồ sơ cấp phép cho ứng dụng của bạn bằng thao tác
get_provisioning_profile
(còn được gọi làsigh
). Việc này cho phép bạn chia sẻ ứng dụng của mình với người kiểm thử.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [Không bắt buộc] Nếu bạn chưa từng chạy ứng dụng của mình trước đây, hãy chạy lệnh sau để tạo ứng dụng của bạn trong Apple Developer Console:
$ fastlane produce --skip_itc
- Cuối cùng, hãy tạo ứng dụng bằng cách chạy làn.
Bạn sẽ được nhắc nhập ID Apple, mật khẩu (được lưu trữ trong Keychain) và ID gói của ứng dụng.
$ fastlane build
Nếu bạn gặp bất kỳ vấn đề nào, vui lòng xem hướng dẫn khắc phục sự cố nhanh.
4. Tải ứng dụng của bạn lên Firebase
Giờ đây, khi đã tạo xong ứng dụng của mình, bạn đã sẵn sàng tải ứng dụng lên tính năng Phân phối ứng dụng.
Tạo và thiết lập dự án Firebase
- Đăng nhập Firebase.
- Trong bảng điều khiển của Firebase,hãy tạo hoặc thêm dự án mới, sau đó đặt tên cho dự án là "Lớp học lập trình xuất UDID".
Bạn không cần bật Google Analytics cho dự án này.
- Nhấp vào Tạo dự án.
Thêm ứng dụng iOS vào dự án
- Nhấp vào biểu tượng iOS để tạo ứng dụng Firebase mới dành cho iOS và nhập mã gói ứng dụng của bạn.
- Bỏ qua vài bước tiếp theo rồi nhấp vào Tiếp tục chuyển đến bảng điều khiển. Bạn sẽ thêm SDK vào ứng dụng của mình sau.
Dự án và ứng dụng của bạn hiện đã có trên trang Tổng quan về dự án.
Cho phép phân phối ứng dụng
- Trong phần Bản phát hành & Giám sát, hãy nhấp vào Phân phối ứng dụng.
- Sau khi chấp nhận các điều khoản, hãy nhấp vào "Bắt đầu" để bật tính năng Phân phối ứng dụng cho ứng dụng của bạn.
Thiết lập phân phối trong fastlane
- Chạy lệnh sau từ thư mục gốc của dự án iOS để thêm tính năng Phân phối ứng dụng vào cấu hình fastlane.
Nếu lệnh nhắc bạn với một tuỳ chọn, hãy chọn Option 3: RubyGems.org:
$ fastlane add_plugin firebase_app_distribution
- Xác nhận rằng bạn đã cài đặt trình bổ trợ:
$ fastlane
Kết quả phải hiển thị fastlane-plugin-firebase_app_distribution
trong danh sách trình bổ trợ đã cài đặt.
- Sau khi xác nhận trình bổ trợ đã được cài đặt, hãy chọn tuỳ chọn 0 để huỷ.
Xác thực dự án Firebase
Để sử dụng trình bổ trợ fastlane, trước tiên, bạn sẽ xác thực dự án Firebase của mình.
- Chạy lệnh sau để kết nối CLI với Tài khoản Google của bạn:
$ firebase login
- Khi lệnh in ra một đường liên kết xác thực, hãy mở đường liên kết đó trong một trình duyệt.
- Khi được nhắc, hãy đăng nhập vào Tài khoản Google của bạn và cấp quyền truy cập vào dự án Firebase của bạn.
Phân phối ứng dụng
Giờ bạn đã sẵn sàng phân phối ứng dụng của mình.
- Ở đầu
./fastlane/Fastfile
, hãy xác định một biến có tên làfirebase_app_id
. Thay thế<your_app_id>
bằng Mã ứng dụng Firebase cho ứng dụng mà bạn đã tạo (bạn có thể tìm thấy mã này trên trang cài đặt dự án).
Fastfile
được viết bằng Ruby, vì vậy, hãy sử dụng cú pháp của Ruby để xác định các biến.
firebase_app_id = "<your_app_id>"
- Thêm một làn đường mới có tên là
distribute
. Đường này có tên là đường của bản dựng, rồi phân phối ứng dụng của bạn bằng thao tácfirebase_app_distribution
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- Chạy làn đường mới để xây dựng ứng dụng và tạo bản phân phối.
$ fastlane distribute
Tại thời điểm này, tệp Fastfile của bạn sẽ có dạng như sau:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
Sau khi làm mới bảng điều khiển của Firebase, bạn sẽ thấy bản phát hành mới cho ứng dụng của mình.
5. Mời người thử nghiệm tải ứng dụng của bạn xuống
Khi chấp nhận lời mời kiểm thử một bản dựng Ad Hoc, người kiểm thử sẽ được yêu cầu cấp quyền chia sẻ UDID của mình. Nếu họ đồng ý, tính năng Phân phối ứng dụng sẽ thu thập thông tin thiết bị của họ và thông báo cho bạn qua email. Trong phần này, bạn sẽ thêm chính mình làm người kiểm thử để tải và kiểm thử ứng dụng bạn đã phân phối.
Thêm chính bạn làm người thử nghiệm cho bản phát hành
- Bên dưới
firebase_app_id
ở đầu Fastfile của bạn, hãy tạo một biến để giữ người kiểm tra và bao gồm địa chỉ email của riêng bạn cũng như các địa chỉ email tùy chọn khác mà bạn muốn dùng thử.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Áp dụng phương thức Array#join của Ruby để biến mảng
app_testers
thành một chuỗi được phân tách bằng dấu phẩy mà tham sốtesters
mong đợi. Sau đó, hãy chuyển kết quả đến tham sốtesters
củafirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
Tại thời điểm này, tệp Fastfile của bạn sẽ có dạng như sau:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- Chạy lại làn đường.
$ fastlane distribute
Sau khi bạn chạy làn đường này, những người kiểm thử mà bạn đã thêm sẽ nhận được email mời từ tính năng Phân phối ứng dụng thông báo cho họ về bản phát hành mới có sẵn. Trong bảng điều khiển của Firebase, bạn hiện có thể xem những người kiểm thử mà bạn đã thêm trong bản phát hành của ứng dụng.
Vì bạn đã thêm địa chỉ email của mình, nên bạn sẽ nhận được email từ tính năng Phân phối ứng dụng Firebase mời bạn thử nghiệm ứng dụng. Bạn là người thử nghiệm đầu tiên! Tiếp tục phần dưới đây để thiết lập người kiểm thử trên thiết bị kiểm thử.
Đăng ký thiết bị thử nghiệm
Là người thử nghiệm, bạn sẽ cần đăng nhập vào Google trên thiết bị thử nghiệm để truy cập vào bản phát hành ứng dụng mà bạn được mời thử nghiệm. Vì bản thử nghiệm của bạn là một bản phát hành Ad Hoc, nên bạn cũng cần đăng ký thiết bị thử nghiệm bằng cách cài đặt hồ sơ Firebase. Sau đó, bạn có thể truy cập các bản phát hành mà bạn có thể truy cập từ ứng dụng web của người kiểm tra tính năng Phân phối ứng dụng bằng cách sử dụng đoạn video trên web đã thêm vào màn hình chính của thiết bị.
- Trên thiết bị thử nghiệm iOS, hãy mở email được gửi từ tính năng Phân phối ứng dụng Firebase và nhấn vào đường liên kết Bắt đầu. Hãy nhớ mở đường liên kết trong Safari.
- Bạn hiện đã ở trong ứng dụng web kiểm tra Phân phối ứng dụng. Trong trang xuất hiện, hãy đăng nhập bằng Tài khoản Google của bạn rồi nhấn vào Chấp nhận lời mời.
- Giờ đây, bạn có thể xem các bản phát hành mà mình được mời tham gia. Nhấn vào Đăng ký thiết bị của một trong các bản phát hành.
- Khi được nhắc, hãy tải hồ sơ Firebase xuống, sau đó cài đặt hồ sơ trong ứng dụng Cài đặt.
Việc cài đặt hồ sơ sẽ cấp cho Firebase quyền:
- Đăng ký thiết bị thử nghiệm bằng cách thu thập mã thiết bị duy nhất (UDID) của thiết bị.
Firebase gửi cho tất cả Chủ sở hữu và Người chỉnh sửa dự án Firebase một email có chứa UDID của thiết bị thử nghiệm.
- Cài đặt đoạn video trên web vào màn hình chính của thiết bị thử nghiệm. Đoạn web này sẽ mở ứng dụng web của người kiểm thử Phân phối ứng dụng. Ứng dụng này cho phép bạn cài đặt và truy cập vào tất cả các ứng dụng kiểm thử của mình.
Trong ứng dụng web của người kiểm thử Phân phối ứng dụng, thiết bị kiểm thử của bạn hiện đã được đăng ký cho bản phát hành của ứng dụng.
Giờ đây, bạn đã chia sẻ UDID của thiết bị thử nghiệm với Firebase, nên giờ bạn có thể tiếp tục với vai trò nhà phát triển. Trong thẻ Nhân viên kiểm thử của Trang tổng quan về việc phân phối ứng dụng, giờ đây, thông tin về người kiểm thử sẽ xuất hiện trong bản phát hành của ứng dụng với trạng thái là "Đã chấp nhận":
Trong phần tiếp theo, bạn sẽ thêm UDID của thiết bị vào hồ sơ cấp phép của ứng dụng, sau đó tạo một phiên bản ứng dụng hoạt động được với thiết bị thử nghiệm.
Xuất UDID của thiết bị kiểm thử
Là nhà phát triển, bạn sẽ nhận được email từ Firebase có chứa UDID của thiết bị thử nghiệm. Tính năng Phân phối ứng dụng giúp bạn dễ dàng thu thập nhiều UDID thiết bị mới cùng một lúc bằng cách cho phép bạn xuất các mã này trực tiếp từ bảng điều khiển của Firebase dưới dạng tệp văn bản thô.
- Để xuất tất cả UDID, hãy mở trang Nhân viên kiểm thử và Thẻ Nhóm.
- Nhấp vào Xuất UDID của Apple.
Tệp này phải chứa UDID của thiết bị thử nghiệm.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
Bạn cũng có thể xuất UDID từ dòng lệnh bằng cách sử dụng fastlane, thao tác này sẽ được thực hiện trong phần tiếp theo.
6. Cập nhật và tạo lại hồ sơ cấp phép của ứng dụng
Bây giờ, bạn sẽ thêm UDID của thiết bị thử nghiệm vào hồ sơ cấp phép của ứng dụng, tạo lại một phiên bản ứng dụng phù hợp với thiết bị và phân phối phiên bản mới.
Thêm Làn đường xuất UDID
- Thêm một biến khác ở đầu Fastfile của bạn và đặt biến đó thành đường dẫn tệp mà người kiểm thử của bạn UDID của thiết bị sẽ được tải xuống.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- Thiết lập một làn mới sử dụng thao tác xuất UDID của trình bổ trợ Phân phối ứng dụng để tải UDID của trình kiểm thử xuống, giống như cách bạn làm trên bảng điều khiển.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- Chạy đường sau để tải UDID xuống.
$ fastlane download_udids
- In tệp đã tải xuống, tệp này chứa mã UDID của thiết bị thử nghiệm.
$ cat tester_udids.txt
Thêm thiết bị vào bảng điều khiển dành cho nhà phát triển của Apple
- Tạo làn đường sau để thêm UDID vào danh sách thiết bị của bạn trong bảng điều khiển dành cho nhà phát triển của Apple. Nhờ đó, bạn có thể thêm các mã này vào hồ sơ cấp phép bằng thao tác fastlane
register_devices
:
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- Sau đó, hãy chạy làn đường:
$ fastlane add_new_devices
Sau đó, bạn sẽ thấy các thiết bị mới trong danh sách thiết bị của bảng điều khiển dành cho nhà phát triển.
Thêm thiết bị vào hồ sơ cấp phép
- Thêm đối số
force
vào bước hồ sơ cấp phép trong lànbuild
của bạn để buộc thành phần này nhận thiết bị mới mỗi khi bạn tạo bản dựng.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
Chạy lại làn đường để tạo và tải lên
Bây giờ, bạn sẽ cập nhật làn đường distribute
của mình với các làn đường mới để thêm thiết bị vào hồ sơ cấp phép, xây dựng lại ứng dụng rồi phân phối.
- Gọi các làn đường mới từ
distribute
:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- Chạy làn đường
distribute
:
$ fastlane distribute
Tại thời điểm này, tệp Fastfile của bạn sẽ có dạng như sau:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
Tải bản phát hành xuống qua thiết bị thử nghiệm
Hiện tại, ứng dụng của bạn đã bao gồm mã UDID của thiết bị thử nghiệm, nên bạn có thể cài đặt mã này trên thiết bị thử nghiệm.
- Trên thiết bị kiểm thử, hãy quay lại ứng dụng web dành cho người kiểm thử tính năng Phân phối ứng dụng bằng đường liên kết trong email hoặc biểu tượng trên màn hình chính của thiết bị.
Khi chuyển đến ứng dụng lớp học lập trình UDID, bạn có thể thấy bản phát hành đã sẵn sàng để tải xuống.
- Nếu bạn đang sử dụng một thiết bị thực, hãy nhấn vào tải xuống, sau đó cài đặt và chạy ứng dụng!
7. Xin chúc mừng
Giờ đây, bạn đã định cấu hình tính năng Phân phối ứng dụng và nhanh để tự động hoá quy trình thử nghiệm trước khi phát hành. Giờ đây, khi muốn mời thêm người kiểm thử hoặc thêm UDID của họ vào ứng dụng, bạn chỉ cần chạy một lệnh: fastlane distribute
.
Vì vậy, bạn không cần thu thập riêng mã UDID từ người kiểm thử hoặc chuyển đến bảng điều khiển dành cho nhà phát triển của Apple để cập nhật danh sách thiết bị hoặc hồ sơ cấp phép nữa. Thậm chí, bạn không cần phải mở XCode!
Bạn có thể dễ dàng thiết lập quy trình công việc này để chạy hằng giờ hoặc hằng ngày trong môi trường tích hợp liên tục.
Tài liệu đọc thêm
- Khám phá các tính năng của Phân phối ứng dụng Firebase, bao gồm cả SDK trong ứng dụng dành cho iOS của chúng tôi
- Tìm hiểu thêm về cách nhanh chóng
- Quản lý quá trình ký mã của nhóm bằng
match
- Tích hợp cách nhanh vào CI