Fastlane là một công cụ mã nguồn mở mạnh mẽ giúp tự động hóa các quy trình liên quan đến việc phát hành ứng dụng di động, đặc biệt là việc đóng gói và phân phối các tệp IPA.
Thiết lập môi trường
Trước tiên, đảm bảo rằng Xcode Command Line Tools của bạn được cập nhật phiên bản mới nhất bằng lệnh sau trong Terminal:
xcode-select --install
Cài đặt Fastlane
Sử dụng trình quản lý gói RubyGems để cài đặt Fastlane:
sudo gem install -n /usr/local/bin fastlane
Nếu gặp sự cố với nguồn gem Ruby do tường lửa, bạn có thể cần thay đổi hoặc thêm nguồn gem:
# Kiểm tra các nguồn gem hiện tại
gem sources -l
# Xóa nguồn mặc định (nếu có vấn đề)
gem source -r https://rubygems.org/
# Thêm nguồn gem của Ruby China
gem source -a https://gems.ruby-china.com
Khởi tạo Fastlane trong dự án
Di chuyển vào thư mục gốc của dự án Xcode và chạy lệnh khởi tạo:
fastlane init
Fastlane sẽ hỏi mục đích sử dụng. Đối với việc tự động hóa phân phối beta hoặc App Store, bạn có thể chọn tùy chọn phù hợp hoặc chọn "Manual setup" để tùy chỉnh hoàn toàn.
Sau khi khởi tạo thành công, một thư mục fastlane sẽ được tạo ra trong thư mục dự án của bạn, bao gồm các tệp cấu hình như Appfile và Fastfile.
Cấu hình Appfile
Tệp Appfile chứa các thông tin cơ bản về ứng dụng của bạn:
app_identifier: Tên gói ứng dụng (Bundle ID).apple_id: Tài khoản Apple Developer của bạn.
Cấu hình Fastfile
Tệp Fastfile là nơi bạn định nghĩa các quy trình tự động hóa. Dưới đây là một ví dụ về cách cấu hình để đóng gói và tải lên Fir.im:
# Tên dự án của bạn
project_name = "DemoApp"
lane :build_ipa do
# Đường dẫn lưu tệp IPA sau khi đóng gói
output_directory = "~/builds/ipa/#{Time.now.strftime('%Y%m%d')}"
# Tên tệp IPA
output_name = "#{project_name}-#{Time.now.strftime("%Y-%m-%d-%H%M%S")}"
# Sử dụng action 'gym' để đóng gói ứng dụng
gym(
scheme: project_name, # Tên scheme của dự án bạn
workspace: "#{project_name}.xcworkspace", # Bỏ dòng này nếu dự án không sử dụng CocoaPods
clean: true, # Thực hiện clean trước khi build
configuration: "Release", # Cấu hình build (Release hoặc Debug)
output_directory: output_directory,
output_name: output_name,
include_bitcode: true, # Bao gồm bitcode
include_symbols: true, # Bao gồm symbol để debug
silent: true, # Chạy ở chế độ im lặng
export_method: "development" # Phương thức xuất (development, ad-hoc, app-store, enterprise)
)
# Tải tệp IPA lên Fir.im
# Bạn cần lấy firim_api_token từ trang web Fir.im
firim(
firim_api_token: 'YOUR_FIRIM_API_TOKEN',
# Bạn cũng có thể thêm các tùy chọn khác như:
# notify: true, # Gửi thông báo cho những người theo dõi
# pnamen: "Tên ứng dụng trên Fir.im",
# version: "1.0.0", # Phiên bản ứng dụng
# changelog: "Bản cập nhật mới với nhiều tính năng cải tiến." # Ghi chú phiên bản
)
end
Lưu ý:
- Nếu dự án của bạn sử dụng CocoaPods, hãy đảm bảo bạn đã cấu hình tham số
workspace. Nếu không, hãy loại bỏ dòng này. - Thay thế
YOUR_FIRIM_API_TOKENbằng API token thực tế của bạn từ Fir.im. - Để tải lên Pgyer, bạn thay thế dòng
firim(...)bằng:
Bạn có thể tìm thấypgyer( api_key: "YOUR_PGYER_API_KEY", user_key: "YOUR_PGYER_USER_KEY", # Các tùy chọn khác như: # update_description: "Các thay đổi trong phiên bản này.", # install_password: "mat_khau_cai_dat" )api_keyvàuser_keytrong phần quản lý ứng dụng trên Pgyer. - Tên của
lane(ví dụ:build_ipa) có thể được đặt tùy ý và sẽ được sử dụng để gọi quy trình này.
Cài đặt Plugin
Để sử dụng các action của Fir.im hoặc Pgyer, bạn cần cài đặt plugin tương ứng:
- Đối với Fir.im:
fastlane add_plugin firim - Đối với Pgyer:
fastlane add_plugin pgyer
Thực hiện đóng gói và phân phối
Chạy lệnh sau trong Terminal để bắt đầu quy trình đã định nghĩa trong Fastfile:
fastlane build_ipa
Sau khi lệnh hoàn tất, bạn sẽ tìm thấy tệp IPA đã được đóng gói tại đường dẫn bạn đã chỉ định trong output_directory của action gym. Nếu cấu hình là Debug, bạn cũng sẽ nhận được tệp nén chứa symbol (dYSM).