Class: FastlaneFlutterFlavor::AndroidLanes

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb

Overview


AndroidLanes (Helper Class)


Instance Method Summary collapse

Constructor Details

#initialize(lane:, root_folder:) ⇒ AndroidLanes

NOTE: We keep @lane for general context, but must use other_action for calling built-in Fastlane actions.



13
14
15
16
# File 'lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb', line 13

def initialize(lane: ,root_folder:)
  @lane = lane
  @root_folder = root_folder
end

Instance Method Details

#download_from_store(package_name:, api_key_path:, metadata_path:, platform: "android") ⇒ Object



95
96
97
98
99
100
101
102
103
104
# File 'lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb', line 95

def download_from_store(package_name:, api_key_path:, metadata_path:, platform: "android")
  FileUtils.rm_rf()

  Fastlane::Actions::sh(
    "fastlane", "supply", "init",
    "--metadata_path", ,
    "--package_name", package_name,
    "--json_key", api_key_path,
    )
end

#get_metadata_path(platform: "android", metadata_path: nil, flavor:) ⇒ Object

Resolves the metadata path: either a custom one relative to the root, or the standard Fastlane structure.



108
109
110
111
112
113
114
115
116
117
118
# File 'lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb', line 108

def (platform: "android", metadata_path: nil, flavor:)
  # If a custom path is provided (and not nil or empty string), use it.
  unless .to_s.empty?
    # Path structure: @root_folder / custom_path / flavor
    return File.join(@root_folder, , flavor)
  end

  # Default Path: Use the standard Fastlane structure.
  # Path structure: @root_folder / fastlane / platform / metadata / flavor
  File.join(@root_folder, "fastlane", platform, 'metadata', flavor)
end

#upload_to_store(aab:, package_name:, api_key_path:, metadata_path:, in_app_update_priority: 1, track: "beta", track_promote_to: "production", skip_upload_prod: false, skip_upload_binary: false, skip_upload_changelogs: false, skip_upload_metadata: false, skip_upload_images: false, skip_upload_screenshots: false, platform: "android") ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb', line 18

def upload_to_store(aab:, package_name:, api_key_path:, metadata_path:,
                    in_app_update_priority: 1, track: "beta", track_promote_to: "production",
                    skip_upload_prod: false, skip_upload_binary: false,
                    skip_upload_changelogs: false, skip_upload_metadata: false,
                    skip_upload_images: false, skip_upload_screenshots: false, platform: "android"
)

  # 1. Upload Binary (AAB file)
  unless skip_upload_binary
    # Use 'other_action' to call the built-in Fastlane action
    @lane.other_action.upload_to_play_store(
      track: track,
      aab: aab,
      package_name: package_name,
      in_app_update_priority: in_app_update_priority,
      json_key: api_key_path,
      metadata_path: ,

      # Explicitly set AAB upload to FALSE if we are skipping it, otherwise TRUE
      skip_upload_aab: false,

      # Skip all other non-binary uploads for this initial call
      skip_upload_apk: true,
      skip_upload_changelogs: true,
      skip_upload_metadata: true,
      skip_upload_images: true,
      skip_upload_screenshots: true,
      )
  end

  # 2. Upload Metadata/Promote to Production (if required)
  unless skip_upload_prod

    # Use 'other_action' to call the built-in Fastlane action
    versions = @lane.other_action.google_play_track_version_codes(
      track: track,
      package_name: package_name,
      json_key: api_key_path,
      )

    # Ensure versions is an array and take the first (latest)
    version_code = versions.is_a?(Array) && versions.any? ? versions[0] : nil

    if version_code.nil?
      Fastlane::UI.error "Could not retrieve version code for package #{package_name} on track #{track}. Skipping metadata/promotion step."
      return
    end

    Fastlane::UI.message  "App Version Code: " + version_code.to_s
    Fastlane::UI.message  "App Identifier: " + package_name
    Fastlane::UI.message  "Track: " + track
    Fastlane::UI.message  "Track Promote to: " + track_promote_to

    # This call handles metadata, changelogs, images, screenshots, and promotion
    # Use 'other_action' to call the built-in Fastlane action
    @lane.other_action.upload_to_play_store(
      track: track,
      track_promote_to: track_promote_to,
      package_name: package_name,
      version_code: version_code, # Ensure we apply changes to the correct version
      in_app_update_priority: in_app_update_priority,
      json_key: api_key_path,
      metadata_path: ,

      # Skip the binary upload here, as it was handled in step 1 or skipped by the user
      skip_upload_aab: true,
      skip_upload_apk: true,

      # Use user-defined skip flags for other components
      skip_upload_changelogs: skip_upload_changelogs,
      skip_upload_metadata: ,
      skip_upload_images: skip_upload_images,
      skip_upload_screenshots: skip_upload_screenshots,
      )
  end
end