Skip to content

Commit 7b98438

Browse files
andoird.rd fix
1 parent 75f68a9 commit 7b98438

File tree

1 file changed

+68
-50
lines changed

1 file changed

+68
-50
lines changed

lib/travis/build/script/android.rb

Lines changed: 68 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)