# This file contains the fastlane.tools configuration # You can find the documentation at https://docs.fastlane.tools # # For a list of all available actions, check out # # https://docs.fastlane.tools/actions # # For a list of all available plugins, check out # # https://docs.fastlane.tools/plugins/available-plugins # # Uncomment the line if you want fastlane to automatically update itself # update_fastlane default_platform(:android) platform :android do desc "Runs all the tests" lane :test do gradle(task: "test") end desc "Build debug and test APK for screenshots" lane :build_bitmask_for_screengrab do gradle( task: 'clean' ) gradle( task: 'assemble', build_type: 'Debug', flavor: 'NormalProductionFat' ) gradle( task: 'assemble', build_type: 'DebugAndroidTest', flavor: 'NormalProductionFat' ) end desc "Build debug and test APK for screenshots" lane :build_custom_for_screengrab do gradle( task: 'clean' ) gradle( task: 'assemble', build_type: 'Debug', flavor: 'CustomProductionFat' ) gradle( task: 'assemble', build_type: 'DebugAndroidTest', flavor: 'CustomProductionFat' ) end desc "Create framed screenshots" lane :create_framed_screenshots do |options| flavor = options[:flavor] || "normal" metadata_path = File.expand_path("../../src/#{flavor}ProductionFat/fastlane/metadata", __FILE__) Dir.chdir(metadata_path) do frameit( white: true, force_device_type: "Google Pixel 5", path: "." ) # rename screenshots, replacing unframed pendants sh( "find . -path '*/images/phoneScreenshots/*_framed.png' -print0 2>/dev/null | " \ "xargs -0 -I{} sh -c 'f=\"{}\"; " \ "nf=\"${f%_framed.png}.png\"; " \ "mv \"$f\" \"$nf\"'" ) end puts "Created framed screenshots" end desc "set device animations" lane :set_animations do |options| animated = options[:animated] system("adb shell settings put global window_animation_scale #{animated}") system("adb shell settings put global transition_animation_scale #{animated}") system("adb shell settings put global animator_duration_scale #{animated}") puts "set device animations to #{animated}" end lane :bitmask_screenshots do # Prepare builds for Automatic UI Tests build_bitmask_for_screengrab # disable animations set_animations(animated: 0) verbose_screenshots = ENV["VERBOSE_SCREENSHOTS"] || "false" capture_android_screenshots( launch_arguments: ["verbose_screenshots #{verbose_screenshots}"] ) # Re-enable animations set_animations(animated: 1) create_framed_screenshots(flavor: "normal") # deliver end lane :custom_build_screenshots do # Prepare builds for Automatic UI Tests build_custom_for_screengrab capture_android_screenshots create_framed_screenshots(flavor: "custom") # deliver end desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "clean assembleRelease") crashlytics # sh "your_script.sh" # You can also use other beta testing services here end desc "Deploy a new version to the Google Play" lane :deploy do gradle(task: "clean assembleRelease") upload_to_play_store end end