Android
빠른 차선
수색…
비고
fastlane 은 iOS, Mac 및 Android 개발자가 스크린 샷 생성, 프로비저닝 프로파일 처리 및 응용 프로그램 릴리스와 같은 지루한 작업을 자동화하는 도구입니다.
문서 도구 : https://docs.fastlane.tools/
Fastfile은 Crashlytics에 의해 여러 가지 맛을 베타 버전으로 빌드하고 업로드합니다.
이것은 다중 풍미 응용 프로그램에 대한 샘플 Fastfile 설정입니다. 모든 향미료 또는 단일 향미료를 만들고 배포 할 수있는 옵션을 제공합니다. 배포 후에는 배포 상태를 슬랙 상태로보고하고 Crashlytics 테스터 그룹의 베타 테스트 담당자에게 알림을 보냅니다.
모든 맛을 구축하고 배포하려면 다음을 사용하십시오.
fastlane android beta
단일 APK를 구축하고 배포하려면 다음 단계를 따르세요.
fastlane android beta app:flavorName
하나의 Fastlane 파일을 사용하여 iOS, Android 및 Mac 응용 프로그램을 관리 할 수 있습니다. 이 파일을 하나의 앱 platform
에만 사용하는 경우에는 필요하지 않습니다.
어떻게 작동 하는가?
-
android
인수는 fastlane에게 우리가 사용할 것을 알립니다:android
platform. -
:android
플랫폼:android
여러 레인을 가질 수 있습니다. 현재:beta
레인 만 있습니다. 위의 명령에서 두 번째 인수는 우리가 사용하고자하는 차선을 지정합니다. -
options[:app]
- Gradle 작업은 두 가지가 있습니다. 첫째, 그것은
gradle clean
실행합니다.app
키로 맛을 제공하면 fastfile은gradle assembleReleaseFlavor
실행합니다. 그렇지 않으면gradle assembleRelease
를 실행하여 모든 빌드 맛을 만듭니다. - 우리가 모든 맛을
SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS
, 생성 된 APK 파일 이름 배열이SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS
저장됩니다. 우리는 생성 된 파일을 반복 하여 Crashlytics에 의해 베타에 배포합니다.notifications
및groups
입력란은 선택 사항입니다. 이들은 Crashlytics 에 의해 베타 버전으로 앱에 등록 된 테스터에게 알리기 위해 사용됩니다. - 크래시 틱스에 익숙하다면 포털에서 앱을 활성화하려면 장치에서 앱을 실행하고 먼저 사용해야합니다. 그렇지 않으면 Crashlytics는 앱을 비활성 상태로 가정하고 오류를 발생시킵니다. 이 시나리오에서는 캡처하여 실패로보고 Slack에보고 하므로 어떤 앱이 비활성 상태인지 알 수 있습니다.
- 배치가 성공하면 fastlane 은 Slack 에게 성공 메시지를 보냅니다.
-
#{/([^\/]*)$/.match(apk)}
이 정규식은 APK 경로에서 맛 이름을 얻는 데 사용됩니다. 작동하지 않는 경우 제거 할 수 있습니다. -
get_version_name
과get_version_code
는 앱 버전 이름과 코드를 검색하는 두 개의 Fastlane 플러그인입니다. 당신이 사용하고 싶거나 당신이 그들을 제거 할 수 있다면 당신은이 보석을 설치해야합니다. 플러그인에 대한 자세한 내용은 여기를 참조하십시오. - 단일 APK를 만들고 배포하는 경우
else
문이 실행됩니다. 우리는 하나의 응용 프로그램 만 가지고 있기 때문에apk_path
에 apk_path를 제공 할 필요가 없습니다. - 마지막에
error do
블록을 사용하여 실행 중에 다른 것이 잘못되면 알림을받는 데 사용됩니다.
노트
SLACK_URL
, API_TOKEN
, GROUP_NAME
및 BUILD_SECRET
을 자신의 자격 증명으로 바꾸는 것을 잊지 마십시오.
fastlane_version "1.46.1"
default_platform :android
platform :android do
before_all do
ENV["SLACK_URL"] = "https://hooks.slack.com/servic...."
end
lane :beta do |options|
# Clean and build the Release version of the app.
# Usage `fastlane android beta app:flavorName`
gradle(task: "clean")
gradle(task: "assemble",
build_type: "Release",
flavor: options[:app])
# If user calls `fastlane android beta` command, it will build all projects and push them to Crashlytics
if options[:app].nil?
lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].each do | apk |
puts "Uploading APK to Crashlytics: " + apk
begin
crashlytics(
api_token: "[API_TOKEN]",
build_secret: "[BUILD_SECRET]",
groups: "[GROUP_NAME]",
apk_path: apk,
notifications: "true"
)
slack(
message: "Successfully deployed new build for #{/([^\/]*)$/.match(apk)} #{get_version_name} - #{get_version_code}",
success: true,
default_payloads: [:git_branch, :lane, :test_result]
)
rescue => ex
# If the app is inactive in Crashlytics, deployment will fail. Handle it here and report to slack
slack(
message: "Error uploading => #{/([^\/]*)$/.match(apk)} #{get_version_name} - #{get_version_code}: #{ex}",
success: false,
default_payloads: [:git_branch, :lane, :test_result]
)
end
end
after_all do |lane|
# This block is called, only if the executed lane was successful
slack(
message: "Operation completed for #{lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].size} app(s) for #{get_version_name} - #{get_version_code}",
default_payloads: [:git_branch, :lane, :test_result],
success: true
)
end
else
# Single APK upload to Beta by Crashlytics
crashlytics(
api_token: "[API_TOKEN]",
build_secret: "[BUILD_SECRET]",
groups: "[GROUP_NAME]",
notifications: "true"
)
after_all do |lane|
# This block is called, only if the executed lane was successful
slack(
message: "Successfully deployed new build for #{options[:app]} #{get_version_name} - #{get_version_code}",
default_payloads: [:git_branch, :lane, :test_result],
success: true
)
end
end
error do |lane, exception|
slack(
message: exception.message,
success: false,
default_payloads: [:git_branch, :lane, :test_result]
)
end
end
end
주어진 빌드 유형에 대한 모든 맛을 만들고 설치하는 Fastfile 레인
이 차선을 Fastfile에 추가하고 명령 행에서 fastlane installAll type:{BUILD_TYPE}
을 실행하십시오. BUILD_TYPE
을 빌드하려는 빌드 유형으로 BUILD_TYPE
.
예 : fastlane installAll type:Debug
이 명령은 주어진 유형의 모든 맛을 구축하고 장치에 설치합니다. 현재 하나 이상의 장치가 연결되어 있으면 현재 작동하지 않습니다. 하나만 가지고 있는지 확인하십시오. 앞으로는 대상 장치를 선택하는 옵션을 추가 할 계획입니다.
lane :installAll do |options|
gradle(task: "clean")
gradle(task: "assemble",
build_type: options[:type])
lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS].each do | apk |
puts "Uploading APK to Device: " + apk
begin
adb(
command: "install -r #{apk}"
)
rescue => ex
puts ex
end
end
end