gametel 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -3
- data/ApiDemos/res/layout/buttons_1.xml +6 -0
- data/ApiDemos/res/layout/controls_1.xml +1 -0
- data/ApiDemos/res/values/strings.xml +1 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/ClockBackActivity.java +0 -1
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.java +0 -1
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskListActivity.java +0 -1
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskListView.java +0 -4
- data/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java +0 -1
- data/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +0 -4
- data/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java +1 -1
- data/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java +5 -6
- data/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java +0 -4
- data/ApiDemos/src/com/example/android/apis/content/FileProvider.java +0 -1
- data/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java +4 -11
- data/ApiDemos/src/com/example/android/apis/view/Hover.java +1 -11
- data/ApiDemos/src/com/example/android/apis/view/Switches.java +0 -1
- data/ChangeLog +10 -0
- data/README.md +14 -1
- data/cucumber.yml +10 -2
- data/features/button.feature +5 -0
- data/features/checkbox.feature +4 -0
- data/features/is_enabled.feature +9 -0
- data/features/list_item.feature +4 -0
- data/features/main_screen.feature +5 -0
- data/features/radio_button.feature +3 -0
- data/features/step_definitions/button_steps.rb +4 -0
- data/features/step_definitions/controls_steps.rb +12 -3
- data/features/step_definitions/is_enabled_steps.rb +7 -0
- data/features/step_definitions/list_item_steps.rb +4 -0
- data/features/step_definitions/main_screen_steps.rb +6 -0
- data/features/step_definitions/view_steps.rb +20 -0
- data/features/support/app_installation_hooks.rb +9 -17
- data/features/support/app_life_cycle_hooks.rb +4 -21
- data/features/support/screens/alert_dialogs_screen.rb +5 -0
- data/features/support/screens/app_menu_screen.rb +6 -0
- data/features/support/screens/auto_complete_menu_screen.rb +11 -0
- data/features/support/screens/auto_complete_screen_top_screen.rb +7 -0
- data/features/support/screens/buttons_screen.rb +1 -0
- data/features/support/screens/controls_screen.rb +5 -2
- data/features/support/screens/custom_views_screen.rb +7 -0
- data/features/support/screens/main_menu_screen.rb +1 -0
- data/features/text.feature +33 -3
- data/features/view.feature +11 -0
- data/gametel.gemspec +2 -2
- data/lib/gametel.rb +14 -0
- data/lib/gametel/accessors.rb +40 -3
- data/lib/gametel/platforms/calabash.rb +42 -3
- data/lib/gametel/version.rb +1 -1
- data/spec/lib/gametel/accessors_spec.rb +102 -32
- data/spec/lib/gametel_spec.rb +10 -0
- metadata +23 -13
- data/ApiDemos/bin/ApiDemos.apk +0 -0
- data/ApiDemos/local.properties +0 -10
@@ -10,8 +10,15 @@ module Gametel
|
|
10
10
|
# enter text in a text box
|
11
11
|
#
|
12
12
|
def enter_text(text, locator)
|
13
|
-
performAction
|
14
|
-
performAction
|
13
|
+
performAction 'enter_text_into_named_field', text, locator[:content_description] if locator[:content_description]
|
14
|
+
performAction 'enter_text_into_numbered_field', text, locator[:index] + 1 if locator[:index]
|
15
|
+
performAction 'enter_text_into_id_field', text, locator[:id] if locator[:id]
|
16
|
+
end
|
17
|
+
|
18
|
+
def clear_text(locator)
|
19
|
+
performAction 'clear_numbered_field', locator[:index] + 1 if locator[:index]
|
20
|
+
performAction 'clear_named_field', locator[:content_description] if locator[:content_description]
|
21
|
+
performAction 'clear_id_field', locator[:id] if locator[:id]
|
15
22
|
end
|
16
23
|
|
17
24
|
#
|
@@ -20,13 +27,15 @@ module Gametel
|
|
20
27
|
def press_button(locator)
|
21
28
|
performAction 'press_button_with_text', locator[:text] if locator[:text]
|
22
29
|
performAction 'press_button_number', locator[:index] + 1 if locator[:index]
|
30
|
+
performAction 'click_on_view_by_id', locator[:id] if locator[:id]
|
23
31
|
end
|
24
32
|
|
25
33
|
#
|
26
34
|
# press a list item
|
27
35
|
#
|
28
36
|
def press_list_item(locator)
|
29
|
-
|
37
|
+
list = locator[:list] ? locator[:list] : 0
|
38
|
+
performAction 'press_list_item', locator[:index] + 1, list if locator[:index]
|
30
39
|
performAction 'click_on_text', locator[:text] if locator[:text]
|
31
40
|
end
|
32
41
|
|
@@ -36,6 +45,7 @@ module Gametel
|
|
36
45
|
def click_checkbox(locator)
|
37
46
|
performAction 'toggle_numbered_checkbox', locator[:index] + 1 if locator[:index]
|
38
47
|
performAction 'click_on_text', locator[:text] if locator[:text]
|
48
|
+
performAction 'click_on_view_by_id', locator[:id] if locator[:id]
|
39
49
|
end
|
40
50
|
|
41
51
|
#
|
@@ -43,6 +53,15 @@ module Gametel
|
|
43
53
|
#
|
44
54
|
def click_radio_button(locator)
|
45
55
|
performAction 'click_on_text', locator[:text] if locator[:text]
|
56
|
+
performAction 'click_on_view_by_id', locator[:id] if locator[:id]
|
57
|
+
end
|
58
|
+
|
59
|
+
#
|
60
|
+
# click a view
|
61
|
+
#
|
62
|
+
def click_view(locator)
|
63
|
+
performAction 'click_on_view_by_id', locator[:id] if locator[:id]
|
64
|
+
performAction 'click_on_text', locator[:text] if locator[:text]
|
46
65
|
end
|
47
66
|
|
48
67
|
#
|
@@ -57,6 +76,18 @@ module Gametel
|
|
57
76
|
true
|
58
77
|
end
|
59
78
|
|
79
|
+
#
|
80
|
+
# determine if a view is enabled
|
81
|
+
#
|
82
|
+
def enabled?(locator)
|
83
|
+
begin
|
84
|
+
performAction 'is_enabled', locator
|
85
|
+
rescue
|
86
|
+
return false
|
87
|
+
end
|
88
|
+
true
|
89
|
+
end
|
90
|
+
|
60
91
|
#
|
61
92
|
# press the back button
|
62
93
|
#
|
@@ -64,6 +95,13 @@ module Gametel
|
|
64
95
|
performAction 'go_back'
|
65
96
|
end
|
66
97
|
|
98
|
+
#
|
99
|
+
# press the enter key
|
100
|
+
#
|
101
|
+
def enter
|
102
|
+
performAction 'send_key_enter'
|
103
|
+
end
|
104
|
+
|
67
105
|
#
|
68
106
|
# scroll down
|
69
107
|
#
|
@@ -84,6 +122,7 @@ module Gametel
|
|
84
122
|
def wait_for_text(text_to_find)
|
85
123
|
performAction 'wait_for_text', text_to_find
|
86
124
|
end
|
125
|
+
|
87
126
|
end
|
88
127
|
end
|
89
128
|
end
|
data/lib/gametel/version.rb
CHANGED
@@ -5,63 +5,133 @@ class AccessorsSampleScreen
|
|
5
5
|
|
6
6
|
list_item(:first_list_item_text, :text => 'first item')
|
7
7
|
list_item(:first_list_item_index, :index => 0)
|
8
|
+
list_item(:first_list_item_index_list, :index => 0, :list => 1)
|
8
9
|
text(:first_name_index, :index => 2)
|
9
|
-
text(:first_name_name, :
|
10
|
+
text(:first_name_name, :content_description => 'Some name')
|
11
|
+
text(:first_name_id, :id => 'fnid')
|
10
12
|
button(:save_text, :text => 'Save')
|
11
13
|
button(:save_index, :index => 1)
|
14
|
+
button(:save_id, :id => 'some_button_id')
|
12
15
|
checkbox(:checkbox_index, :index => 0)
|
13
16
|
checkbox(:checkbox_text, :text => 'Checkbox 2')
|
17
|
+
checkbox(:checkbox_id, :id => 'some_check_id')
|
14
18
|
radio_button(:radio_text, :text => 'Radio Button 1')
|
19
|
+
radio_button(:radio_id, :id => 'some_radio_id')
|
20
|
+
view(:view_id, :id => 'some_view_id')
|
21
|
+
view(:view_text, :text => 'Any view text')
|
15
22
|
end
|
16
23
|
|
17
24
|
describe Gametel::Accessors do
|
18
25
|
context "when using Calabash" do
|
19
26
|
let(:screen) { AccessorsSampleScreen.new }
|
20
27
|
let(:platform) { calabash_platform(screen) }
|
21
|
-
|
22
|
-
it "should know how to press a list item by text" do
|
23
|
-
platform.should_receive(:performAction).with('click_on_text', 'first item')
|
24
|
-
screen.first_list_item_text
|
25
|
-
end
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
context "list items" do
|
30
|
+
it "should know how to be chosen by text" do
|
31
|
+
platform.should_receive(:performAction).with('click_on_text', 'first item')
|
32
|
+
screen.first_list_item_text
|
33
|
+
end
|
31
34
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
it "should know how to be chosen by index" do
|
36
|
+
platform.should_receive(:performAction).with('press_list_item', 1, 0)
|
37
|
+
screen.first_list_item_index
|
38
|
+
end
|
36
39
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
+
it "should know how to select the list when using index" do
|
41
|
+
platform.should_receive(:performAction).with('press_list_item', 1, 1)
|
42
|
+
screen.first_list_item_index_list
|
43
|
+
end
|
40
44
|
end
|
41
45
|
|
42
|
-
|
43
|
-
|
44
|
-
|
46
|
+
context "text controls" do
|
47
|
+
it "should know how to enter text using an index" do
|
48
|
+
platform.should_receive(:performAction).with('enter_text_into_numbered_field', 'blah', 3)
|
49
|
+
screen.first_name_index = 'blah'
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should know how to enter text using the name" do
|
53
|
+
platform.should_receive(:performAction).with('enter_text_into_named_field', 'blah', 'Some name')
|
54
|
+
screen.first_name_name = 'blah'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should know how to enter text using the id" do
|
58
|
+
platform.should_receive(:performAction).with('enter_text_into_id_field', 'blah', 'fnid')
|
59
|
+
screen.first_name_id = 'blah'
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should know how to be cleared using an index" do
|
63
|
+
platform.should_receive(:performAction).with('clear_numbered_field', 3)
|
64
|
+
screen.clear_first_name_index
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should know how to be cleared by name" do
|
68
|
+
platform.should_receive(:performAction).with('clear_named_field', 'Some name')
|
69
|
+
screen.clear_first_name_name
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should know now to be cleared by id" do
|
73
|
+
platform.should_receive(:performAction).with('clear_id_field', 'fnid')
|
74
|
+
screen.clear_first_name_id
|
75
|
+
end
|
45
76
|
end
|
46
77
|
|
47
|
-
|
48
|
-
|
49
|
-
|
78
|
+
context "buttons" do
|
79
|
+
it "should know how to be chosen by text" do
|
80
|
+
platform.should_receive(:performAction).with('press_button_with_text', 'Save')
|
81
|
+
screen.save_text
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should know how to be chosen by index" do
|
85
|
+
platform.should_receive(:performAction).with('press_button_number', 2)
|
86
|
+
screen.save_index
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should know how to be chosen by id" do
|
90
|
+
platform.should_receive(:performAction).with('click_on_view_by_id', 'some_button_id')
|
91
|
+
screen.save_id
|
92
|
+
end
|
50
93
|
end
|
51
94
|
|
52
|
-
|
53
|
-
|
54
|
-
|
95
|
+
|
96
|
+
context "checkboxes" do
|
97
|
+
it "should know how to be checked by index" do
|
98
|
+
platform.should_receive(:performAction).with('toggle_numbered_checkbox', 1)
|
99
|
+
screen.checkbox_index
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should know how to be checked by text" do
|
103
|
+
platform.should_receive(:performAction).with('click_on_text', 'Checkbox 2')
|
104
|
+
screen.checkbox_text
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should know how to be checked by id" do
|
108
|
+
platform.should_receive(:performAction).with('click_on_view_by_id', 'some_check_id')
|
109
|
+
screen.checkbox_id
|
110
|
+
end
|
55
111
|
end
|
56
112
|
|
57
|
-
|
58
|
-
|
59
|
-
|
113
|
+
context "radio buttons" do
|
114
|
+
it "should know how to be clicked by text" do
|
115
|
+
platform.should_receive(:performAction).with('click_on_text', 'Radio Button 1')
|
116
|
+
screen.radio_text
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should know how to be clicked by id" do
|
120
|
+
platform.should_receive(:performAction).with('click_on_view_by_id', 'some_radio_id')
|
121
|
+
screen.radio_id
|
122
|
+
end
|
60
123
|
end
|
61
124
|
|
62
|
-
|
63
|
-
|
64
|
-
|
125
|
+
context "views" do
|
126
|
+
it "should know how to be clicked by id" do
|
127
|
+
platform.should_receive(:performAction).with('click_on_view_by_id', 'some_view_id')
|
128
|
+
screen.view_id
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should know how to be clicked by test" do
|
132
|
+
platform.should_receive(:performAction).with('click_on_text', 'Any view text')
|
133
|
+
screen.view_text
|
134
|
+
end
|
65
135
|
end
|
66
136
|
end
|
67
137
|
end
|
data/spec/lib/gametel_spec.rb
CHANGED
@@ -26,11 +26,21 @@ describe Gametel do
|
|
26
26
|
screen.has_text? "blah"
|
27
27
|
end
|
28
28
|
|
29
|
+
it "should know if a view is enabled" do
|
30
|
+
platform.should_receive(:performAction).with('is_enabled', 'some_id').and_return("success" => true)
|
31
|
+
screen.should be_enabled('some_id')
|
32
|
+
end
|
33
|
+
|
29
34
|
it "should know how to press the back button" do
|
30
35
|
platform.should_receive(:performAction).with('go_back')
|
31
36
|
screen.back
|
32
37
|
end
|
33
38
|
|
39
|
+
it "should know how to press the enter key" do
|
40
|
+
platform.should_receive(:performAction).with('send_key_enter')
|
41
|
+
screen.enter
|
42
|
+
end
|
43
|
+
|
34
44
|
it "should know how to scroll down" do
|
35
45
|
platform.should_receive(:performAction).with('scroll_down')
|
36
46
|
screen.scroll_down
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gametel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-08-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: calabash-android
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.2.11
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ! '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.
|
30
|
+
version: 0.2.11
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: rspec
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,9 +82,7 @@ files:
|
|
82
82
|
- ApiDemos/assets/HelloActivity.apk
|
83
83
|
- ApiDemos/assets/fonts/samplefont.ttf
|
84
84
|
- ApiDemos/assets/read_asset.txt
|
85
|
-
- ApiDemos/bin/ApiDemos.apk
|
86
85
|
- ApiDemos/build.xml
|
87
|
-
- ApiDemos/local.properties
|
88
86
|
- ApiDemos/proguard-project.txt
|
89
87
|
- ApiDemos/project.properties
|
90
88
|
- ApiDemos/res/anim/animator.xml
|
@@ -955,6 +953,7 @@ files:
|
|
955
953
|
- cucumber.yml
|
956
954
|
- features/button.feature
|
957
955
|
- features/checkbox.feature
|
956
|
+
- features/is_enabled.feature
|
958
957
|
- features/list_item.feature
|
959
958
|
- features/main_screen.feature
|
960
959
|
- features/radio_button.feature
|
@@ -962,19 +961,27 @@ files:
|
|
962
961
|
- features/step_definitions/calabash_steps.rb
|
963
962
|
- features/step_definitions/checkbox_steps.rb
|
964
963
|
- features/step_definitions/controls_steps.rb
|
964
|
+
- features/step_definitions/is_enabled_steps.rb
|
965
965
|
- features/step_definitions/list_item_steps.rb
|
966
966
|
- features/step_definitions/main_screen_steps.rb
|
967
967
|
- features/step_definitions/radio_button_steps.rb
|
968
|
+
- features/step_definitions/view_steps.rb
|
968
969
|
- features/support/app_installation_hooks.rb
|
969
970
|
- features/support/app_life_cycle_hooks.rb
|
970
971
|
- features/support/env.rb
|
971
972
|
- features/support/hooks.rb
|
973
|
+
- features/support/screens/alert_dialogs_screen.rb
|
974
|
+
- features/support/screens/app_menu_screen.rb
|
975
|
+
- features/support/screens/auto_complete_menu_screen.rb
|
976
|
+
- features/support/screens/auto_complete_screen_top_screen.rb
|
972
977
|
- features/support/screens/buttons_screen.rb
|
973
978
|
- features/support/screens/controls_menu_screen.rb
|
974
979
|
- features/support/screens/controls_screen.rb
|
980
|
+
- features/support/screens/custom_views_screen.rb
|
975
981
|
- features/support/screens/main_menu_screen.rb
|
976
982
|
- features/support/screens/views_menu_screen.rb
|
977
983
|
- features/text.feature
|
984
|
+
- features/view.feature
|
978
985
|
- gametel.gemspec
|
979
986
|
- irb_android.sh
|
980
987
|
- lib/gametel.rb
|
@@ -985,7 +992,7 @@ files:
|
|
985
992
|
- spec/lib/gametel/accessors_spec.rb
|
986
993
|
- spec/lib/gametel_spec.rb
|
987
994
|
- spec/spec_helper.rb
|
988
|
-
homepage:
|
995
|
+
homepage: http://github.com/leandog/gametel
|
989
996
|
licenses: []
|
990
997
|
post_install_message:
|
991
998
|
rdoc_options: []
|
@@ -997,18 +1004,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
997
1004
|
- - ! '>='
|
998
1005
|
- !ruby/object:Gem::Version
|
999
1006
|
version: '0'
|
1000
|
-
segments:
|
1001
|
-
- 0
|
1002
|
-
hash: 3967481805464418560
|
1003
1007
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1004
1008
|
none: false
|
1005
1009
|
requirements:
|
1006
1010
|
- - ! '>='
|
1007
1011
|
- !ruby/object:Gem::Version
|
1008
1012
|
version: '0'
|
1009
|
-
segments:
|
1010
|
-
- 0
|
1011
|
-
hash: 3967481805464418560
|
1012
1013
|
requirements: []
|
1013
1014
|
rubyforge_project:
|
1014
1015
|
rubygems_version: 1.8.24
|
@@ -1018,6 +1019,7 @@ summary: High level wrapper around android drivers
|
|
1018
1019
|
test_files:
|
1019
1020
|
- features/button.feature
|
1020
1021
|
- features/checkbox.feature
|
1022
|
+
- features/is_enabled.feature
|
1021
1023
|
- features/list_item.feature
|
1022
1024
|
- features/main_screen.feature
|
1023
1025
|
- features/radio_button.feature
|
@@ -1025,19 +1027,27 @@ test_files:
|
|
1025
1027
|
- features/step_definitions/calabash_steps.rb
|
1026
1028
|
- features/step_definitions/checkbox_steps.rb
|
1027
1029
|
- features/step_definitions/controls_steps.rb
|
1030
|
+
- features/step_definitions/is_enabled_steps.rb
|
1028
1031
|
- features/step_definitions/list_item_steps.rb
|
1029
1032
|
- features/step_definitions/main_screen_steps.rb
|
1030
1033
|
- features/step_definitions/radio_button_steps.rb
|
1034
|
+
- features/step_definitions/view_steps.rb
|
1031
1035
|
- features/support/app_installation_hooks.rb
|
1032
1036
|
- features/support/app_life_cycle_hooks.rb
|
1033
1037
|
- features/support/env.rb
|
1034
1038
|
- features/support/hooks.rb
|
1039
|
+
- features/support/screens/alert_dialogs_screen.rb
|
1040
|
+
- features/support/screens/app_menu_screen.rb
|
1041
|
+
- features/support/screens/auto_complete_menu_screen.rb
|
1042
|
+
- features/support/screens/auto_complete_screen_top_screen.rb
|
1035
1043
|
- features/support/screens/buttons_screen.rb
|
1036
1044
|
- features/support/screens/controls_menu_screen.rb
|
1037
1045
|
- features/support/screens/controls_screen.rb
|
1046
|
+
- features/support/screens/custom_views_screen.rb
|
1038
1047
|
- features/support/screens/main_menu_screen.rb
|
1039
1048
|
- features/support/screens/views_menu_screen.rb
|
1040
1049
|
- features/text.feature
|
1050
|
+
- features/view.feature
|
1041
1051
|
- spec/lib/gametel/accessors_spec.rb
|
1042
1052
|
- spec/lib/gametel_spec.rb
|
1043
1053
|
- spec/spec_helper.rb
|
data/ApiDemos/bin/ApiDemos.apk
DELETED
Binary file
|
data/ApiDemos/local.properties
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# This file is automatically generated by Android Tools.
|
2
|
-
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
3
|
-
#
|
4
|
-
# This file must *NOT* be checked into Version Control Systems,
|
5
|
-
# as it contains information specific to your local configuration.
|
6
|
-
|
7
|
-
# location of the SDK. This is only used by Ant
|
8
|
-
# For customization when using a Version Control System, please read the
|
9
|
-
# header note.
|
10
|
-
sdk.dir=/opt/android
|