Ruby là ngôn ngữ thông dịch động với cú pháp thanh lịch, nổi tiếng với framework Ruby on Rails. Trong phát triển di động, Ruby được sử dụng chủ yếu thông qua Fastlane — công cụ tiêu chuẩn để tự động hóa việc xây dựng, kiểm thử và triển khai các ứng dụng iOS và Android. Theo tài liệu chính thức của Fastlane, công cụ này được sử dụng trong hơn 100.000 dự án trên toàn thế giới.
Những điểm chính
Ruby là ngôn ngữ thông dịch động mã nguồn mở được tạo bởi Yukihiro Matsumoto vào năm 1995. Nguyên tắc cốt lõi của Ruby là "sự đơn giản tối ưu" (nguyên tắc ít gây ngạc nhiên nhất). Ngôn ngữ này được biết đến với block (closure), cách tiếp cận thuần túy hướng đối tượng (mọi thứ đều là đối tượng, bao gồm cả số) và hệ thống siêu lập trình mạnh mẽ.
Ruby chạy trên trình thông dịch YARV (Yet Another Ruby VM) với biên dịch JIT từ phiên bản 3.1. Phiên bản hiện tại Ruby 3.4 (2025) bao gồm decorator, trình phân tích Prism cải tiến và hỗ trợ kiểu thử nghiệm qua RBS. RubyGems — trình quản lý gói — chứa hơn 200.000 gem.
Ruby on Rails là framework web nổi tiếng nhất được xây dựng bằng Ruby, nhưng trong phát triển di động, Ruby được sử dụng khác đi. Lĩnh vực chính của nó là Fastlane: một hệ sinh thái các script Ruby và gem để tự động hóa tất cả các giai đoạn của vòng đời ứng dụng di động — từ ký mã đến xuất bản lên cửa hàng.
Làm việc với Fastlane chỉ cần hiểu biết cơ bản về Ruby: phương thức, khối do-end, ký hiệu (:symbol) và cú pháp hash { key: value }. Không giống Python, Ruby sử dụng end để đóng khối thay vì thụt đầu dòng. Các phương thức có thể được gọi mà không cần dấu ngoặc — điều này được sử dụng tích cực trong DSL của Fastlane.
# Cú pháp Ruby cơ bản được sử dụng trong Fastlane
def download_assets(version, platform: "ios")
paths = {
ios: "ios/Assets.car",
android: "android/app/src/main/assets"
}
url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
puts "Downloading from: #{url}"
unless File.exist?("temp/assets")
Dir.mkdir("temp/assets")
end
result = system("curl -o temp/assets.zip #{url}")
raise "Download failed" unless result
end
download_assets("1.2.3", platform: "android")Trong ví dụ, phương thức download_assets nhận một đối số version và một tham số có tên tùy chọn platform (mặc định "ios"). Nội suy chuỗi với #{...} nhúng giá trị trực tiếp vào chuỗi. unless là ngược lại với if — nó thực thi mã khi điều kiện sai.
Fastlane là công cụ mã nguồn mở được viết bằng Ruby. Được cài đặt qua gem install fastlane, nó cung cấp một tập hợp các lệnh để tự động hóa các tác vụ thường ngày nhất của nhà phát triển di động: tạo ảnh chụp màn hình, ký mã, xuất bản lên TestFlight và Google Play Console.
Fastlane bao gồm các công cụ: sigh (quản lý chứng chỉ), match (đồng bộ chứng chỉ trong nhóm), gym (build iOS), gradle (build Android), deliver (xuất bản iOS), supply (xuất bản Android), snapshot (ảnh chụp màn hình), scan (kiểm thử). Tất cả các công cụ đều có thể truy cập từ một Fastfile duy nhất.
Trong các dự án lớn, Fastlane xử lý hơn 50 hành động trong một pipeline duy nhất: tăng phiên bản, tải tài nguyên từ CDN, build, ký, tải lên App Store Connect, gửi thông báo Slack. Toàn bộ pipeline được thực thi bằng một lệnh duy nhất: fastlane release.
Fastfile là tệp DSL giống Ruby mô tả một chuỗi các hành động (lane). Mỗi lane là một tác vụ riêng biệt: beta (build thử nghiệm), release, screenshots. Các lane có thể gọi các lane khác với các tham số được truyền.
# Fastfile — cấu hình pipeline build ứng dụng iOS
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Xây dựng và triển khai bản build TestFlight"
lane :beta do |options|
increment_build_number(
build_number: options[:build]
)
match(type: :appstore)
gym(
scheme: "MyApp",
export_method: "app-store",
configuration: "Release"
)
upload_to_testflight(
app_identifier: "com.example.myapp"
)
slack(
message: "Build #{options[:build]} đã được tải lên TestFlight"
)
end
endLane beta thực thi tuần tự: tăng số build (increment_build_number), đồng bộ chứng chỉ (match), xây dựng archive (gym), tải lên TestFlight (upload_to_testflight) và gửi thông báo Slack. Tham số :build được truyền vào lane như một đối số có tên.
Fastlane hỗ trợ cả hai nền tảng trong một Fastfile duy nhất. Đối với Android, hãy sử dụng lane bên trong platform :android với các hành động gradle, supply và google_play_track_version_codes.
platform :android do
desc "Xây dựng APK và xuất bản lên Google Play Internal Testing"
lane :beta do
gradle(
task: "assemble",
build_type: "Release",
flavor: "Production"
)
supply(
track: "internal",
apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
)
end
endFastlane bao gồm hơn 200 hành động tích hợp. Dưới đây là những hành động quan trọng nhất cho phát triển di động, được phân loại theo danh mục.
| Hành động | Nền tảng | Mục đích |
|---|---|---|
| match | iOS | Đồng bộ chứng chỉ và hồ sơ cấp phép qua Git |
| gym | iOS | Xây dựng archive .app và .ipa |
| scan | iOS | Chạy kiểm thử UI trên trình mô phỏng |
| snapshot | iOS | Tạo ảnh chụp màn hình tự động trên các thiết bị khác nhau |
| deliver | iOS | Tải build, ảnh chụp và metadata lên App Store Connect |
| pilot | iOS | Quản lý TestFlight: tải build, thêm người kiểm thử |
| gradle | Android | Chạy tác vụ Gradle: assemble, test, bundle |
| supply | Android | Tải APK/AAB và metadata lên Google Play Console |
| screengrab | Android | Ảnh chụp màn hình tự động cho Google Play |
| firebase_app_distribution | Cả hai | Tải build lên Firebase App Distribution |
match là gem Fastlane để đồng bộ chứng chỉ iOS và hồ sơ cấp phép giữa các nhà phát triển. Tất cả bí mật được lưu trữ trong kho Git được mã hóa hoặc S3. Match tự động tạo chứng chỉ nếu thiếu và gia hạn khi hết hạn.
# Khởi tạo match cho dự án mới
$ fastlane match init
# Tạo và đồng bộ chứng chỉ App Store
$ fastlane match appstore
# Tạo chứng chỉ Development cho nhóm
$ fastlane match development
# Gia hạn tất cả chứng chỉ khi hết hạn
$ fastlane match --forceMatch lưu trữ khóa riêng tư với cụm mật khẩu chỉ nhà phát triển biết. Mỗi nhà phát triển nhân bản kho chứng chỉ và chạy match để cài đặt hồ sơ hiện tại. Chứng chỉ Apple có hiệu lực 1 năm; match tự động gia hạn chúng.
Fastlane tích hợp với bất kỳ nền tảng CI/CD nào: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins và Xcode Cloud (qua xcode-build). Fastlane chạy trên CI bằng fastlane <lane_name> và trả về mã lỗi nếu bất kỳ bước nào thất bại.
Thiết lập cho GitHub Actions bao gồm cài đặt Ruby, fastlane và chạy lane qua bundle exec fastlane. Build iOS yêu cầu trình chạy macOS. Build Android có thể sử dụng ubuntu-latest, rẻ hơn.
# .github/workflows/deploy.yml — CI/CD với Fastlane
name: Deploy Mobile App
on:
push:
branches: [main]
jobs:
ios-deploy:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- run: bundle install
- run: bundle exec fastlane beta
- env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}Quy trình làm việc chạy khi push lên main. Trình chạy macOS thực thi bundle exec fastlane beta từ Fastfile. MATCH_PASSWORD được truyền qua GitHub Secrets để giải mã chứng chỉ. Sau khi lane hoàn thành, một hành động Slack gửi thông báo.
RubyGems là trình quản lý gói cho Ruby. Fastlane được mở rộng thông qua plugin — các gem thêm hành động mới. Plugin fastlane-plugin-versioning quản lý phiên bản, fastlane-plugin-firebase_app_distribution tải build lên Firebase. Có hơn 500 plugin Fastlane trên GitHub.
Gemfile ở thư mục gốc của dự án cố định phiên bản của tất cả các phụ thuộc để đảm bảo build tái tạo được. bundle install cài đặt gem từ Gemfile.lock. Các gem thiết yếu cho phát triển di động bao gồm: fastlane, cocoapods (phụ thuộc iOS), xcodeproj (thao tác .xcodeproj).
# Gemfile cho dự án di động
source "https://rubygems.org"
gem "fastlane", "~> 2.220"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)Fastlane không phải là công cụ tự động hóa duy nhất. Hãy so sánh nó với các giải pháp thay thế chính dựa trên các tiêu chí quan trọng đối với một nhóm phát triển di động.
| Tiêu chí | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Linh hoạt | Tối đa (mã) | Trung bình (bước) | Thấp (hạn chế) | Cao |
| iOS | Hỗ trợ đầy đủ | Đầy đủ | Đầy đủ (tích hợp) | Qua macOS tự lưu trữ |
| Android | Hỗ trợ đầy đủ | Đầy đủ | Không | Đầy đủ |
| Chứng chỉ (match) | Tích hợp | Qua Code Signing | Tự động | Qua fastlane |
| Chạy cục bộ | Có | Không (chỉ CI) | Không | Qua act |
| Plugin | 500+ | 200+ tích hợp | Không có | 20.000+ hành động |
Fastlane vẫn là công cụ linh hoạt nhất cho các pipeline phức tạp. Bitrise thuận tiện cho các nhóm không có nhà phát triển Ruby. Xcode Cloud phù hợp cho các dự án iOS đơn giản. GitHub Actions là lý tưởng nếu nhóm đã sử dụng GitHub.
Các câu hỏi thường gặp
Ruby không được sử dụng để viết ứng dụng di động, mà để tự động hóa quy trình build, kiểm thử và triển khai thông qua Fastlane. Fastlane là tiêu chuẩn thực tế cho CI/CD trong phát triển iOS và Android.
Fastlane hoạt động trên macOS, Linux và Windows, nhưng build iOS yêu cầu Xcode và macOS. Build Android có thể chạy trên bất kỳ nền tảng nào. Nhà phát triển sử dụng macOS cục bộ, và trên CI — macOS cho iOS và Linux cho Android.
Hiểu biết cơ bản về Ruby là đủ để làm việc với Fastlane. Fastlane sử dụng DSL giống Ruby trong Fastfile. Đối với các tác vụ thông thường, kiến thức về gem, khối do-end và cú pháp cơ bản là đủ. Kiến thức sâu về Ruby là không cần thiết.
Các giải pháp thay thế: Gradle cho Android (tích hợp), Xcode Cloud (Apple), Bitrise (giao diện web), GitHub Actions (YAML). Fastlane vẫn là công cụ linh hoạt nhất nhờ hệ sinh thái phong phú các hành động và plugin.
Có, Fastlane được sử dụng bởi các công ty lớn. Tất cả các hành động và tệp cấu hình được quản lý phiên bản trong kho lưu trữ, và match đảm bảo lưu trữ an toàn chứng chỉ trong kho lưu trữ hoặc S3.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm