Android
追い越し車線
サーチ…
備考
fastlaneは、iOS、Mac、Androidの開発者がスクリーンショットの生成、プロビジョニングプロファイルの処理、アプリケーションの解放などの面倒な作業を自動化するためのツールです。
ドキュメント: https : //docs.fastlane.tools/
ソースコード: https : //github.com/fastlane/fastlane
CrashlyticsによってBetaに複数の味を構築してアップロードするFastfile
これは、マルチフレーバーアプリのサンプルFastfile設定です。これは、すべてのフレーバーまたは単一のフレーバーを構築し、展開するオプションを提供します。デプロイ後、 Slackにデプロイメントのステータスを報告し、BetaのテスターにCrashlyticsテスターグループによる通知を送信します。
すべての味を構築して配備するには、以下を使用します。
fastlane android beta
単一のAPKを構築して使用するには:
fastlane android beta app:flavorName
1つのFastlaneファイルを使用して、iOS、Android、およびMacアプリを管理できます。このファイルを1つのアプリケーションplatform
用に使用している場合は、必須ではありません。
使い方
-
android
引数は、fastlaneに:android
プラットフォームを使用するよう指示します。 - 内部
:android
プラットフォームでは、複数のレーンを持つことができます。現在、私は:beta
レーンしか持っていません。上のコマンドの第2引数は、使用したいレーンを指定します。 -
options[:app]
- Gradleタスクは2つあります。まず、
gradle clean
実行します。あなたが味を提供した場合はapp
キー、fastfile走るgradle assembleReleaseFlavor
。それ以外の場合は、gradle assembleRelease
を実行してすべてのビルドフレーバをビルドします。 - すべてのフレーバー用に構築する場合は、生成されたAPKファイル名の配列が
SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS
格納されます。これを使用して、生成されたファイルをループし、CrashlyticsによってBetaに展開します。notifications
およびgroups
フィールドはオプションです。彼らはCrashlyticsによってベータ版のアプリに登録されているテスターに通知するために使用されます。 - クラッシュスティックスに精通している場合は、ポータルでアプリケーションをアクティブにするには、デバイス上でアプリを実行してから使用する必要があります。そうしないと、Crashlyticsはアプリを非アクティブにしてエラーをスローします。このシナリオでは、私はそれをキャプチャし、失敗としてSlackに報告するので、どのアプリが非アクティブであるかを知ることができます。
- 展開が成功すると、 fastlaneはSlackに成功メッセージを送ります。
-
#{/([^\/]*)$/.match(apk)}
この正規表現は、APKパスからフレーバー名を取得するために使用されます。それがあなたのために働かない場合は、それを削除することができます。 -
get_version_name
とget_version_code
は、アプリケーションのバージョン名とコードを取得するための2つのFastlaneプラグインです。これらの宝石は、使いたい場合にインストールするか、削除することができます。プラグインの詳細はこちらをご覧ください。 - 単一のAPKを構築して配備する場合、
else
ステートメントが実行されます。私たちは1つのアプリケーションしかないので、Crashlyticsに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レーン
Fastlineにこのレーンを追加し、コマンドラインでfastlane installAll type:{BUILD_TYPE}
を実行してください。 BUILD_TYPE
を、ビルドするビルドタイプに置き換えます。
次に例を示しますfastlane installAll type:Debug
このコマンドは、指定されたタイプのすべてのフレーバーを構築し、あなたのデバイスにインストールします。現在、複数のデバイスが接続されている場合は動作しません。あなたは1つだけを持っていることを確認してください。将来私はターゲットデバイスを選択するオプションを追加するつもりです。
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