Ruby — isang dynamic na interpreted na wika na may eleganteng syntax, kilala sa Ruby on Rails framework. Sa mobile development, ang Ruby ay ginagamit pangunahin sa pamamagitan ng Fastlane — ang karaniwang tool para sa automation ng builds, pagsubok at pag-deploy ng iOS at Android app. Ayon sa opisyal na dokumentasyon ng Fastlane, ang tool ay ginagamit sa mahigit 100,000 proyekto sa buong mundo.
Mga Pangunahing Punto
Ruby — isang dynamic na interpreted na wika na may open source, nilikha ni Yukihiro Matsumoto noong 1995. Ang pangunahing prinsipyo ng Ruby — «optimal na simpleksidad» (principle of least surprise). Ang wika ay kilala sa mga bloke (closures), purong object-oriented na approach (lahat ay bagay, kabilang ang mga numero) at malakas na sistema ng metaprogramming.
Ang Ruby ay tumatakbo sa YARV interpreter (Yet Another Ruby VM) na may JIT compilation mula bersyon 3.1. Ang kasalukuyang bersyon Ruby 3.4 (2025) ay may kasamang mga dekorator, pinahusay na Prism parser at eksperimental na suporta sa uri sa pamamagitan ng RBS. RubyGems — ang package manager — ay naglalaman ng mahigit 200,000 gems.
Ruby on Rails — ang pinakakilalang web framework sa Ruby, ngunit sa mobile development ang Ruby ay ginagamit nang iba. Ang pangunahing niche — Fastlane: ecosystem ng mga Ruby script at gems para sa automation ng lahat ng yugto ng lifecycle ng mobile app: mula sa pag-sign ng mga sertipiko hanggang sa publikasyon sa mga tindahan.
Para sa pagtatrabaho sa Fastlane, sapat na ang pangunahing pag-unawa sa Ruby: mga method, do-end blocks, simbolo (:symbol) at hash syntax { key: value }. Hindi tulad ng Python, ang Ruby ay gumagamit ng end para isara ang mga block, hindi indentation. Ang mga method ay maaaring tawagan nang walang panaklong — ito ay aktibong ginagamit sa Fastlane DSL.
# Pangunahing Ruby syntax na ginagamit sa 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")Sa halimbawa, ang method na download_assets ay tumatanggap ng argument na version at opsyonal na pinangalanang parameter na platform (default ios). Ang string interpolation sa pamamagitan ng #{} ay naglalagay ng mga halaga nang direkta sa mga string. unless — kabaligtaran ng if, nag-e-execute ng code kung ang kondisyon ay mali.
Fastlane — isang open-source tool, nakasulat sa Ruby. Na-install sa pamamagitan ng gem install fastlane, nagbibigay ito ng set ng mga command para sa automation ng mga pinaka-routine na gawain ng mobile developer: paggawa ng mga screenshot, pag-sign ng code, publikasyon sa TestFlight at Google Play Console.
Ang Fastlane ay binubuo ng mga tool: sigh (pamamahala ng sertipiko), match (synchronization ng mga sertipiko sa team), gym (iOS build), gradle (Android build), deliver (iOS publication), supply (Android publication), snapshot (mga screenshot), scan (pagsubok). Lahat ng tool ay accessible mula sa isang Fastfile.
Sa malalaking proyekto, ang Fastlane ay humahawak ng hanggang 50+ actions sa isang pipeline: pagtaas ng bersyon, pag-download ng mga asset mula sa CDN, build, pag-sign, pag-upload sa App Store Connect, pagpapadala ng notification sa Slack. Ang buong pipeline ay isinasagawa sa isang command: fastlane release.
Fastfile — isang file sa Ruby-like DSL na naglalarawan ng sequence ng mga aksyon (lane). Ang bawat lane ay isang hiwalay na gawain: beta (build para sa pagsubok), release (release), screenshots (pag-generate ng mga screenshot). Ang mga lane ay maaaring tumawag sa ibang lane na may mga ipinasa na parameter.
# Fastfile — configuration ng build pipeline ng iOS app
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Build at deploy ng TestFlight build"
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]} ay na-upload sa TestFlight"
)
end
endAng beta lane ay sunod-sunod na nag-execute: pagtaas ng build number (increment_build_number), synchronization ng mga sertipiko (match), compilation ng archive (gym), pag-upload sa TestFlight (upload_to_testflight) at pagpapadala ng notification sa Slack. Ang parameter na :build ay ipinapasa sa lane bilang pinangalanang argument.
Ang Fastlane ay sumusuporta sa parehong platform sa isang Fastfile. Para sa Android, ginagamit ang lane sa loob ng platform :android na may mga action na gradle, supply at google_play_track_version_codes.
platform :android do
desc "APK build at publikasyon sa 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 ay may kasamang mahigit 200 built-in na actions. Sa ibaba — ang pinakamahalaga para sa mobile development, na pinagpangkat ayon sa kategorya.
| Action | Platform | Layunin |
|---|---|---|
| match | iOS | Synchronization ng mga sertipiko at provisioning profile sa pamamagitan ng Git |
| gym | iOS | Compilation ng .app at .ipa archive |
| scan | iOS | Pagpapatakbo ng UI tests sa simulator |
| snapshot | iOS | Awtomatikong pag-generate ng mga screenshot sa iba’t ibang device |
| deliver | iOS | Pag-upload ng build, screenshot at metadata sa App Store Connect |
| pilot | iOS | Pamamahala ng TestFlight: pag-upload ng build, pagdagdag ng mga tester |
| gradle | Android | Pagpapatakbo ng Gradle tasks: assemble, test, bundle |
| supply | Android | Pag-upload ng APK/AAB at metadata sa Google Play Console |
| screengrab | Android | Awtomatikong mga screenshot para sa Google Play |
| firebase_app_distribution | Pareho | Pag-upload ng build sa Firebase App Distribution |
match — isang Fastlane gem para sa synchronization ng iOS certificates at provisioning profile sa pagitan ng mga developer. Lahat ng mga lihim ay naka-imbak sa naka-encrypt na Git repository o S3. Awtomatikong gumagawa ang Match ng mga sertipiko kung wala at ina-update ang mga ito sa pag-expire.
# Pagsisimula ng match para sa bagong proyekto
$ fastlane match init
# Paggawa at synchronization ng App Store certificates
$ fastlane match appstore
# Paggawa ng Development certificates para sa team
$ fastlane match development
# Pag-update ng lahat ng certificates sa pag-expire
$ fastlane match --forceAng Match ay nag-iimbak ng mga pribadong key na may passphrase na alam lamang ng mga developer. Ang bawat developer ay nag-clone ng repository ng sertipiko at nagpapatakbo ng match upang i-install ang kasalukuyang mga profile. Ang mga Apple certificate ay may bisa ng 1 taon, awtomatikong pinapalawig sila ng match.
Fastlane ay integrated sa anumang CI/CD platform: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins at Xcode Cloud (sa pamamagitan ng xcode-build). Ang Fastlane ay pinapatakbo sa CI sa pamamagitan ng fastlane <pangalan_lane> at nagbabalik ng error code kung may mabigo.
Configuration para sa GitHub Actions ay may kasamang pag-install ng Ruby, fastlane at pagpapatakbo ng lane sa pamamagitan ng bundle exec fastlane. Para sa iOS build, kailangan ang macOS runner. Para sa Android, maaaring gamitin ang ubuntu-latest, na mas mura.
# .github/workflows/deploy.yml — CI/CD sa 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 }}Ang workflow ay pinapatakbo sa push sa main. Ang macOS runner ay nag-execute ng bundle exec fastlane beta mula sa Fastfile. Ang MATCH_PASSWORD ay ipinapasa sa pamamagitan ng GitHub Secrets para i-decrypt ang mga sertipiko. Pagkatapos ng lane, ang Slack action ay nagpapadala ng notification.
RubyGems — ang package manager para sa Ruby. Ang Fastlane ay pinalalawak sa pamamagitan ng mga plugin — mga gem na nagdaragdag ng mga bagong action. Ang plugin na fastlane-plugin-versioning ay namamahala ng mga bersyon, fastlane-plugin-firebase_app_distribution ay nag-uupload ng mga build sa Firebase. Sa GitHub mayroong mahigit 500 Fastlane plugin.
Ang Gemfile sa root ng proyekto ay nagtatakda ng mga bersyon ng lahat ng dependencies para sa reproducibility ng mga build. Ang bundle install ay nag-i-install ng mga gems ayon sa Gemfile.lock. Mga pangunahing gem para sa mobile development: fastlane, cocoapods (iOS dependencies), xcodeproj (paggawa gamit ang .xcodeproj).
# Gemfile para sa mobile project
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 — hindi lamang ang automation tool. Ihambing natin ito sa mga pangunahing alternatibo ayon sa mga criteria na mahalaga para sa isang mobile team.
| Criteria | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flexibility | Maximum (code) | Katamtaman (steps) | Mababa (limitado) | Mataas |
| iOS | Buong suporta | Buong | Buong (built-in) | Sa pamamagitan ng self-hosted macOS |
| Android | Buong suporta | Buong | Wala | Buong |
| Mga sertipiko (match) | Built-in | Sa pamamagitan ng Code Signing | Awtomatiko | Sa pamamagitan ng fastlane |
| Lokal na pagpapatakbo | Oo | Hindi (CI lang) | Hindi | Sa pamamagitan ng act |
| Mga plugin | 500+ | 200+ integrasyon | Wala | 20,000+ actions |
Ang Fastlane ay nananatiling pinaka-flexible na tool para sa mga kumplikadong pipeline. Ang Bitrise ay maginhawa para sa mga team na walang Ruby developer. Xcode Cloud — para sa mga simpleng iOS project. GitHub Actions — kung ang team ay gumagamit na ng GitHub.
Mga Madalas Itanong
Ruby ay hindi ginagamit para sa pagsulat ng mobile apps, kundi para sa automation ng mga proseso ng build, pagsubok at pag-deploy sa pamamagitan ng Fastlane. Ang Fastlane ay de facto standard para sa CI/CD sa iOS at Android development.
Fastlane ay gumagana sa macOS, Linux at Windows, ngunit para sa iOS build ay kailangan ang Xcode at macOS. Ang mga Android build ay isinasagawa sa anumang platform. Lokal, ang mga developer ay gumagamit ng macOS, sa CI — macOS para sa iOS at Linux para sa Android.
Ang pangunahing pag-unawa sa Ruby ay sapat na para magtrabaho sa Fastlane. Ang Fastlane ay gumagamit ng Ruby-like DSL sa Fastfile. Para sa mga tipikal na gawain, sapat na ang kaalaman sa mga gem, do-end blocks at pangunahing syntax. Hindi kailangan ang malalim na kaalaman sa Ruby.
Mga alternatibo: Gradle para sa Android (built-in), Xcode Cloud (Apple), Bitrise (web interface), GitHub Actions (YAML). Ang Fastlane ay nananatiling pinaka-flexible na tool dahil sa mayamang ecosystem ng mga action at plugin.
Oo, ang Fastlane ay ginagamit ng malalaking kumpanya. Lahat ng action at configuration file ay na-version sa repository, at ang match ay nagbibigay ng ligtas na imbakan ng mga sertipiko sa repository o S3.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din