Class: Mysigner::Build::AndroidExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/mysigner/build/android_executor.rb

Defined Under Namespace

Classes: BuildError

Instance Method Summary collapse

Constructor Details

#initialize(project_info, parser) ⇒ AndroidExecutor

Returns a new instance of AndroidExecutor.



12
13
14
15
# File 'lib/mysigner/build/android_executor.rb', line 12

def initialize(project_info, parser)
  @project_info = project_info
  @parser = parser
end

Instance Method Details

#build_aab!(variant: 'release', keystore_path: nil, keystore_password: nil, key_alias: nil, key_password: nil, version_code: nil) ⇒ Object

Build AAB (Android App Bundle) for Play Store Returns: path to .aab file Options:

- variant: Build variant (default: 'release')
- keystore_path: Path to keystore file
- keystore_password: Keystore password
- key_alias: Key alias in keystore
- key_password: Key password (defaults to keystore_password)
- version_code: Override version code (passed via gradle property)

Raises:



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
# File 'lib/mysigner/build/android_executor.rb', line 26

def build_aab!(variant: 'release', keystore_path: nil, keystore_password: nil, key_alias: nil, key_password: nil,
               version_code: nil)
  @variant = variant
  @keystore_path = keystore_path
  @keystore_password = keystore_password
  @key_alias = key_alias
  @key_password = key_password || keystore_password
  @version_code = version_code

  # Determine task name
  task = "bundle#{variant.capitalize}"

  # Build
  success = run_gradle_build(task)

  raise BuildError, 'Android build failed. Check output above for errors.' unless success

  # Find output AAB
  aab_path = find_aab_output(variant)

  unless aab_path && File.exist?(aab_path)
    raise BuildError, "Build reported success but AAB not found. Expected at: #{@parser.aab_output_path(variant)}"
  end

  aab_path
end

#build_apk!(variant: 'release', keystore_path: nil, keystore_password: nil, key_alias: nil, key_password: nil) ⇒ Object

Build APK Returns: path to .apk file

Raises:



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/mysigner/build/android_executor.rb', line 55

def build_apk!(variant: 'release', keystore_path: nil, keystore_password: nil, key_alias: nil, key_password: nil)
  @variant = variant
  @keystore_path = keystore_path
  @keystore_password = keystore_password
  @key_alias = key_alias
  @key_password = key_password || keystore_password

  # Determine task name
  task = "assemble#{variant.capitalize}"

  # Build
  success = run_gradle_build(task)

  raise BuildError, 'Android build failed. Check output above for errors.' unless success

  # Find output APK
  apk_path = find_apk_output(variant)

  unless apk_path && File.exist?(apk_path)
    raise BuildError, "Build reported success but APK not found. Expected at: #{@parser.apk_output_path(variant)}"
  end

  apk_path
end

#clean!Object

Clean build outputs



81
82
83
# File 'lib/mysigner/build/android_executor.rb', line 81

def clean!
  run_gradle_command('clean')
end