@@ -10,14 +10,75 @@ class Android < Script
1010
1111 def setup
1212 super
13- set_android_environment_variables
14- if build_tools_desired . empty?
15- sh . echo "No build-tools version specified in android.components. Consider adding one of the following:" , ansi : :yellow
16- sh . cmd "#{ @sdkmanager_bin } --list | grep 'build-tools' | cut -d'|' -f1" , echo : false , timing : false
17- sh . echo "The following versions are preinstalled:" , ansi : :yellow
18- sh . cmd "for v in $(ls #{ android_sdk_build_tools_dir } | sort -r 2>/dev/null); do echo build-tools-$v; done; echo" , echo : false , timing : false
13+
14+ android_home = '/usr/local/android-sdk'
15+ sh . echo "Using Android SDK at #{ android_home } " , ansi : :green
16+ sh . export 'ANDROID_HOME' , android_home , echo : true
17+
18+ sh . echo "Setting up sdkmanager" , ansi : :green
19+
20+ # Sprawdzamy bezpośrednio ścieżkę, którą widzimy w logach
21+ sdkmanager_path = "#{ android_home } /cmdline-tools/bin/sdkmanager"
22+
23+ sh . cmd "test -f \" #{ sdkmanager_path } \" && echo \" FOUND=YES\" || echo \" FOUND=NO\" " , echo : false , assert : true do |result |
24+ if result . stdout . include? ( "FOUND=YES" )
25+ sh . echo "Found sdkmanager at #{ sdkmanager_path } " , ansi : :green
26+ else
27+ sdkmanager_path = nil
28+ sh . echo "sdkmanager not found at #{ sdkmanager_path } " , ansi : :yellow
29+ end
30+ end
31+
32+ # Ustawiamy komendę sdkmanager jeśli plik istnieje
33+ if sdkmanager_path
34+ sdkmanager_cmd = "\" #{ sdkmanager_path } \" --sdk_root=\" #{ android_home } \" "
35+ sh . echo "Using sdkmanager command: #{ sdkmanager_cmd } " , ansi : :green
36+
37+ sh . export 'PATH' , "#{ File . dirname ( sdkmanager_path ) } :#{ android_home } /tools:#{ android_home } /tools/bin:#{ android_home } /platform-tools:$PATH" , echo : true
38+
39+ if build_tools_desired . empty?
40+ sh . echo "No build-tools version specified in android.components. Available versions:" , ansi : :yellow
41+ sh . cmd "#{ sdkmanager_cmd } --list | grep 'build-tools' | cut -d'|' -f1 || echo 'Failed to list build-tools'" , echo : true , assert : true
42+
43+ sh . echo "Preinstalled versions:" , ansi : :yellow
44+ sh . cmd "ls -la #{ android_sdk_build_tools_dir } 2>/dev/null || echo 'None'" , echo : true , assert : true
45+ end
46+
47+ unless components . empty?
48+ sh . echo "Installing Android components: #{ components . join ( ', ' ) } " , ansi : :green
49+
50+ sh . echo "Accepting SDK licenses"
51+ sh . cmd "yes | #{ sdkmanager_cmd } --licenses > /dev/null || echo 'License acceptance failed'" , echo : true , assert : true
52+
53+ components . each do |name |
54+ sh . echo "Installing component: #{ name } " , ansi : :yellow
55+
56+ sdk_name = if name =~ /^build-tools-(.+)$/
57+ "build-tools;#{ $1} "
58+ elsif name == 'platform-tools'
59+ "platform-tools"
60+ elsif name == 'tools'
61+ "tools"
62+ elsif name =~ /^platforms-android-(.+)$/
63+ "platforms;android-#{ $1} "
64+ elsif name =~ /^android-(.+)$/
65+ "platforms;android-#{ $1} "
66+ elsif name =~ /^system-images-android-(.+)-(.+)-(.+)$/
67+ "system-images;android-#{ $1} ;#{ $2} ;#{ $3} "
68+ elsif name =~ /^extra-google-(.+)$/
69+ "extras;google;#{ $1} "
70+ elsif name =~ /^extra-android-(.+)$/
71+ "extras;android;#{ $1} "
72+ else
73+ name
74+ end
75+
76+ sh . cmd "yes | #{ sdkmanager_cmd } \" #{ sdk_name } \" --verbose || echo 'Installation of #{ name } failed'" , echo : true , assert : true
77+ end
78+ end
79+ else
80+ sh . echo "Could not find sdkmanager, Android build may fail" , ansi : :red
1981 end
20- install_sdk_components unless components . empty?
2182 end
2283
2384 def script
@@ -37,49 +98,6 @@ def script
3798
3899 private
39100
40- def set_android_environment_variables
41- android_home = ENV [ 'ANDROID_HOME' ] || '/usr/local/android-sdk'
42- sh . export 'ANDROID_HOME' , android_home
43- @sdkmanager_bin = "#{ android_home } /cmdline-tools/bin/sdkmanager"
44- sh . export 'PATH' , "#{ File . dirname ( @sdkmanager_bin ) } :#{ android_home } /tools:#{ android_home } /tools/bin:#{ android_home } /platform-tools:$PATH"
45- sh . cmd "mkdir -p #{ File . dirname ( @sdkmanager_bin ) } " , echo : false
46- end
47-
48- def install_sdk_components
49- sh . fold 'android.install' do
50- sh . echo 'Installing Android dependencies'
51- android_home = ENV [ 'ANDROID_HOME' ] || '/usr/local/android-sdk'
52- sh . cmd "yes | #{ @sdkmanager_bin } --sdk_root=#{ android_home } --licenses >/dev/null || true" , echo : true
53- components . each do |name |
54- sh . cmd install_sdk_component ( name )
55- end
56- end
57- end
58-
59- def install_sdk_component ( name )
60- android_home = ENV [ 'ANDROID_HOME' ] || '/usr/local/android-sdk'
61- sdk_name = if name =~ /^build-tools-(.+)$/
62- "build-tools;#{ $1} "
63- elsif name =~ /^platform-tools-(.+)$/
64- "platform-tools"
65- elsif name =~ /^tools-(.+)$/
66- "tools"
67- elsif name =~ /^platforms-android-(.+)$/
68- "platforms;android-#{ $1} "
69- elsif name =~ /^android-(.+)$/
70- "platforms;android-#{ $1} "
71- elsif name =~ /^system-images-android-(.+)-(.+)-(.+)$/
72- "system-images;android-#{ $1} ;#{ $2} ;#{ $3} "
73- elsif name =~ /^extra-google-(.+)$/
74- "extras;google;#{ $1} "
75- elsif name =~ /^extra-android-(.+)$/
76- "extras;android;#{ $1} "
77- else
78- name
79- end
80- "yes | #{ @sdkmanager_bin } --sdk_root=#{ android_home } \" #{ sdk_name } \" --verbose"
81- end
82-
83101 def build_tools_desired
84102 components . map do |component |
85103 if component =~ /^build-tools-(?<version>[\d \. ]+)$/
0 commit comments