Skip to content

Commit a820e24

Browse files
andoird.rd fix
1 parent 75f68a9 commit a820e24

File tree

1 file changed

+94
-50
lines changed

1 file changed

+94
-50
lines changed

lib/travis/build/script/android.rb

Lines changed: 94 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,101 @@ 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+
# Najpierw sprawdzamy, czy sdkmanager jest dostępny w PATH
21+
sdkmanager_path = nil
22+
sdkmanager_cmd = nil
23+
24+
sh.cmd "command -v sdkmanager >/dev/null && echo \"FOUND_IN_PATH=YES\" || echo \"FOUND_IN_PATH=NO\"", echo: false, assert: true do |result|
25+
if result.stdout.include?("FOUND_IN_PATH=YES")
26+
sh.echo "sdkmanager available in PATH", ansi: :green
27+
sdkmanager_cmd = "sdkmanager --sdk_root=\"#{android_home}\""
28+
else
29+
sh.echo "sdkmanager not available in PATH, checking specific locations", ansi: :yellow
30+
31+
# Sprawdzamy konkretną ścieżkę, którą widzimy w logach
32+
sdkmanager_path = "#{android_home}/cmdline-tools/bin/sdkmanager"
33+
34+
sh.cmd "test -f \"#{sdkmanager_path}\" && echo \"FOUND=YES\" || echo \"FOUND=NO\"", echo: false, assert: true do |path_result|
35+
if path_result.stdout.include?("FOUND=YES")
36+
sh.echo "Found sdkmanager at #{sdkmanager_path}", ansi: :green
37+
sdkmanager_cmd = "\"#{sdkmanager_path}\" --sdk_root=\"#{android_home}\""
38+
else
39+
sdkmanager_path = nil
40+
sh.echo "sdkmanager not found at expected location", ansi: :yellow
41+
end
42+
end
43+
end
44+
end
45+
46+
# Jeśli nadal nie mamy sdkmanager, dodajemy narzędzia Android do PATH
47+
if sdkmanager_cmd.nil?
48+
sh.echo "Trying to add Android tools to PATH", ansi: :yellow
49+
sh.export 'PATH', "#{android_home}/cmdline-tools/bin:#{android_home}/tools/bin:#{android_home}/platform-tools:$PATH", echo: true
50+
51+
sh.cmd "command -v sdkmanager >/dev/null && echo \"NOW_FOUND=YES\" || echo \"NOW_FOUND=NO\"", echo: false, assert: true do |result|
52+
if result.stdout.include?("NOW_FOUND=YES")
53+
sh.echo "sdkmanager now available in PATH after adjustment", ansi: :green
54+
sdkmanager_cmd = "sdkmanager --sdk_root=\"#{android_home}\""
55+
else
56+
sh.echo "sdkmanager still not available in PATH", ansi: :red
57+
end
58+
end
59+
end
60+
61+
# Używamy komendy sdkmanager, jeśli jest dostępna
62+
if sdkmanager_cmd
63+
sh.echo "Using sdkmanager command: #{sdkmanager_cmd}", ansi: :green
64+
65+
if build_tools_desired.empty?
66+
sh.echo "No build-tools version specified in android.components. Available versions:", ansi: :yellow
67+
sh.cmd "#{sdkmanager_cmd} --list | grep 'build-tools' | cut -d'|' -f1 || echo 'Failed to list build-tools'", echo: true, assert: true
68+
69+
sh.echo "Preinstalled versions:", ansi: :yellow
70+
sh.cmd "ls -la #{android_sdk_build_tools_dir} 2>/dev/null || echo 'None'", echo: true, assert: true
71+
end
72+
73+
unless components.empty?
74+
sh.echo "Installing Android components: #{components.join(', ')}", ansi: :green
75+
76+
sh.echo "Accepting SDK licenses"
77+
sh.cmd "yes | #{sdkmanager_cmd} --licenses > /dev/null || echo 'License acceptance failed'", echo: true, assert: true
78+
79+
components.each do |name|
80+
sh.echo "Installing component: #{name}", ansi: :yellow
81+
82+
sdk_name = if name =~ /^build-tools-(.+)$/
83+
"build-tools;#{$1}"
84+
elsif name == 'platform-tools'
85+
"platform-tools"
86+
elsif name == 'tools'
87+
"tools"
88+
elsif name =~ /^platforms-android-(.+)$/
89+
"platforms;android-#{$1}"
90+
elsif name =~ /^android-(.+)$/
91+
"platforms;android-#{$1}"
92+
elsif name =~ /^system-images-android-(.+)-(.+)-(.+)$/
93+
"system-images;android-#{$1};#{$2};#{$3}"
94+
elsif name =~ /^extra-google-(.+)$/
95+
"extras;google;#{$1}"
96+
elsif name =~ /^extra-android-(.+)$/
97+
"extras;android;#{$1}"
98+
else
99+
name
100+
end
101+
102+
sh.cmd "yes | #{sdkmanager_cmd} \"#{sdk_name}\" --verbose || echo 'Installation of #{name} failed'", echo: true, assert: true
103+
end
104+
end
105+
else
106+
sh.echo "Could not find sdkmanager, Android build may fail", ansi: :red
19107
end
20-
install_sdk_components unless components.empty?
21108
end
22109

23110
def script
@@ -37,49 +124,6 @@ def script
37124

38125
private
39126

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-
83127
def build_tools_desired
84128
components.map do |component|
85129
if component =~ /^build-tools-(?<version>[\d\.]+)$/

0 commit comments

Comments
 (0)