blob: ca2f46d2f33fabd49f8285b21582a24a45856a38 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#!/bin/bash
DEFAULT_API=23
BUILD_TOOLS="24.0.0"
function print_help_and_exit() {
echo "./start_emulator.sh [options]"
echo "Options:"
echo "--api=[api level] : starts an x86 emulator of a specific API level. Default value is ${DEFAULT_API}."
echo "--tablet : starts an x86 emulator with a Nexus 9 configuration. Default is phone-like."
echo "--update_sdk : Updates your local SDK. Default is not to update."
echo "--headless : Runs the emulator in a headless (CI) mode. Default is with UI (non-headless)."
exit 0
}
API=$DEFAULT_API
IS_TABLET=0
UPDATE_SDK=0
HEADLESS=0
for i in "$@"
do
case $i in
--api=*)
API="${i#*=}"
;;
--tablet)
IS_TABLET=1
;;
--help|-h)
print_help_and_exit
;;
--update_sdk)
UPDATE_SDK=1
;;
--headless)
HEADLESS=1
;;
*)
# unknown option
echo "unknown argument ${i}"
print_help_and_exit
;;
esac
done
REQUIRED_ADD_ON="addon-google_apis-google-${API}"
REQUIRED_SYS_IMG="sys-img-x86-addon-google_apis-google-${API}"
TARGET_NAME="Google Inc.:Google APIs:${API}"
TARGET_ID_NUMNER_TEXT=$(android list targets | grep "${TARGET_NAME}" | egrep -o "id: [0-9]+")
if [ -z "${TARGET_ID_NUMNER_TEXT}" ]; then
echo "Could not find System image for API ${API}. Forcing SDK update."
UPDATE_SDK=1
fi
if [ ${UPDATE_SDK} -eq 1 ]; then
echo "Fetching required SDK packages for emulator with API ${API} and is-tablet=${IS_TABLET}"
android update sdk --all --no-ui --filter platform-tools,build-tools-${BUILD_TOOLS},extra-intel-Hardware_Accelerated_Execution_Manager,android-${DEFAULT_API},addon-google_apis-google-${DEFAULT_API},${REQUIRED_ADD_ON},extra-android-support,extra-android-m2repository,extra-google-m2repository,extra-google-google_play_services,${REQUIRED_SYS_IMG}
fi
TARGET_ID_NUMNER_TEXT=$(android list targets | grep "${TARGET_NAME}" | egrep -o "id: [0-9]+")
TARGET_ID_NUMNER=${TARGET_ID_NUMNER_TEXT:4}
if [ ${IS_TABLET} -eq 1 ]; then
DEV_WIDTH="2048"
DEV_HEIGHT="1536"
DPI="320"
ORIENTATION="landscape"
AVD_NAME="Tablet_${API}"
else
DEV_WIDTH="1080"
DEV_HEIGHT="1900"
ORIENTATION="portrait"
DPI="420"
AVD_NAME="Phone_${API}"
fi
#checking if we have this emulator already created
if [ -z "$(android list avd -c | grep ${AVD_NAME})" ]; then
echo "Creating emulator with target-id ${TARGET_ID_NUMNER}, API ${API} and is-tablet=${IS_TABLET}"
android create avd --name "${AVD_NAME}" --target ${TARGET_ID_NUMNER} -c 200M -s ${DEV_WIDTH}x${DEV_HEIGHT} --tag google_apis --abi x86
#tweaking
echo "hw.gpu.enabled=yes
hw.gpu.mode=auto
hw.keyboard=yes
hw.lcd.density=420
hw.mainKeys=no
hw.ramSize=1536
hw.sdCard=yes
hw.sensors.orientation=yes
hw.sensors.proximity=yes
hw.lcd.width=${DEV_WIDTH}
hw.lcd.height=${DEV_HEIGHT}
hw.trackBall=no
runtime.network.latency=none
runtime.network.speed=full
runtime.scalefactor=auto
vm.heapSize=512" >> "${HOME}/.android/avd/${AVD_NAME}.avd/config.ini"
fi
echo "Starting emulator with API ${API} and is-tablet=${IS_TABLET}..."
HEADLESS_ARGS=""
if [ ${HEADLESS} -eq 1 ]; then
echo "Headless mode!"
#-noaudio removed till emulator bug fixed (does not work on macOS)
HEADLESS_ARGS="-no-skin -no-window"
fi
#>/dev/null 2>&1 &
emulator -avd ${AVD_NAME} ${HEADLESS_ARGS}
|