Tự động hóa quy trình đóng gói IPA và phân phối bằng Fastlane

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ư AppfileFastfile.

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_TOKEN bằ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:
    pgyer(
          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"
        )
    Bạn có thể tìm thấy api_keyuser_key trong 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).

Thẻ: fastlane ipa automation build distribution

Đăng vào ngày 23 tháng 5 lúc 14:30