mirror of
https://github.com/budtmo/docker-android.git
synced 2025-12-08 18:25:50 +00:00
157 lines
5.4 KiB
Bash
Executable File
157 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function wait_emulator_to_be_ready () {
|
|
boot_completed=false
|
|
while [ "$boot_completed" == false ]; do
|
|
status=$(adb wait-for-device shell getprop sys.boot_completed | tr -d '\r')
|
|
echo "Boot Status: $status"
|
|
|
|
if [ "$status" == "1" ]; then
|
|
boot_completed=true
|
|
else
|
|
sleep 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
function change_language_if_needed() {
|
|
if [ ! -z "${LANGUAGE// }" ] && [ ! -z "${COUNTRY// }" ]; then
|
|
wait_emulator_to_be_ready
|
|
echo "Language will be changed to ${LANGUAGE}-${COUNTRY}"
|
|
adb root && adb shell "setprop persist.sys.language $LANGUAGE; setprop persist.sys.country $COUNTRY; stop; start" && adb unroot
|
|
echo "Language is changed!"
|
|
fi
|
|
}
|
|
|
|
function install_google_play () {
|
|
wait_emulator_to_be_ready
|
|
echo "Google Play Service will be installed"
|
|
adb install -r "/root/google_play_services.apk"
|
|
echo "Google Play Store will be installed"
|
|
adb install -r "/root/google_play_store.apk"
|
|
}
|
|
|
|
function enable_proxy_if_needed () {
|
|
if [ "$ENABLE_PROXY_ON_EMULATOR" = true ]; then
|
|
if [ ! -z "${HTTP_PROXY// }" ]; then
|
|
if [[ $HTTP_PROXY == *"http"* ]]; then
|
|
protocol="$(echo $HTTP_PROXY | grep :// | sed -e's,^\(.*://\).*,\1,g')"
|
|
proxy="$(echo ${HTTP_PROXY/$protocol/})"
|
|
echo "[EMULATOR] - Proxy: $proxy"
|
|
|
|
IFS=':' read -r -a p <<< "$proxy"
|
|
|
|
echo "[EMULATOR] - Proxy-IP: ${p[0]}"
|
|
echo "[EMULATOR] - Proxy-Port: ${p[1]}"
|
|
|
|
wait_emulator_to_be_ready
|
|
echo "Enable proxy on Android emulator. Please make sure that docker-container has internet access!"
|
|
adb root
|
|
|
|
echo "Set up the Proxy"
|
|
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"0.0.0.0" --bind port:s:"0000" --where "mcc=310" --where "mnc=260""
|
|
sleep 5
|
|
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"${p[0]}" --bind port:s:"${p[1]}" --where "mcc=310" --where "mnc=260""
|
|
|
|
if [ ! -z "${HTTP_PROXY_USER}" ]; then
|
|
sleep 2
|
|
adb shell "content update --uri content://telephony/carriers --bind user:s:"${HTTP_PROXY_USER}" --where "mcc=310" --where "mnc=260""
|
|
fi
|
|
if [ ! -z "${HTTP_PROXY_PASSWORD}" ]; then
|
|
sleep 2
|
|
adb shell "content update --uri content://telephony/carriers --bind password:s:"${HTTP_PROXY_PASSWORD}" --where "mcc=310" --where "mnc=260""
|
|
fi
|
|
|
|
adb unroot
|
|
|
|
# Mobile data need to be restarted for Android 10 or higher
|
|
adb shell svc data disable
|
|
adb shell svc data enable
|
|
else
|
|
echo "Please use http:// in the beginning!"
|
|
fi
|
|
else
|
|
echo "$HTTP_PROXY is not given! Please pass it through environment variable!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function change_emulator_ram_size() {
|
|
echo '-------------------------------------------------'
|
|
echo 'Changing emulator ram size for better performance'
|
|
echo '-------------------------------------------------'
|
|
sed '/^hw.ramSize /s/=.*$/= 4096/' /root/android_emulator/hardware-qemu.ini
|
|
echo '-------------------------------------------------'
|
|
echo 'Emulator ram size changed to 4096'
|
|
echo '-------------------------------------------------'
|
|
}
|
|
|
|
function check_emulator_popups() {
|
|
echo "Waiting for device..."
|
|
wait_emulator_to_be_ready
|
|
$ANDROID_HOME/platform-tools/adb wait-for-device shell true
|
|
|
|
EMU_BOOTED=0
|
|
n=0
|
|
first_launcher=1
|
|
echo 1 > /tmp/failed
|
|
while [[ $EMU_BOOTED = 0 ]];do
|
|
echo "Test for current focus"
|
|
CURRENT_FOCUS=`$ANDROID_HOME/platform-tools/adb shell dumpsys window 2>/dev/null | grep -i mCurrentFocus`
|
|
echo "Current focus: ${CURRENT_FOCUS}"
|
|
case $CURRENT_FOCUS in
|
|
*"Launcher"*)
|
|
if [[ $first_launcher == 1 ]]; then
|
|
echo "Launcher seems to be ready, wait 10 sec for another popup..."
|
|
sleep 10
|
|
first_launcher=0
|
|
else
|
|
echo "Launcher is ready, Android boot completed"
|
|
EMU_BOOTED=1
|
|
rm /tmp/failed
|
|
fi
|
|
;;
|
|
*"Not Responding: com.android.systemui"*)
|
|
echo "Dismiss System UI isn't responding alert"
|
|
change_emulator_ram_size
|
|
adb shell su root 'kill $(pidof com.android.systemui)'
|
|
first_launcher=1
|
|
;;
|
|
*"Not Responding: com.google.android.gms"*)
|
|
echo "Dismiss GMS isn't responding alert"
|
|
adb shell input keyevent KEYCODE_ENTER
|
|
first_launcher=1
|
|
;;
|
|
*"Not Responding: system"*)
|
|
echo "Dismiss Process system isn't responding alert"
|
|
adb shell input keyevent KEYCODE_ENTER
|
|
first_launcher=1
|
|
;;
|
|
*"ConversationListActivity"*)
|
|
echo "Close Messaging app"
|
|
adb shell input keyevent KEYCODE_ENTER
|
|
first_launcher=1
|
|
;;
|
|
*)
|
|
n=$((n + 1))
|
|
echo "Waiting Android to boot 10 sec ($n)..."
|
|
sleep 10
|
|
if [ $n -gt 60 ]; then
|
|
echo "Android Emulator does not start in 10 minutes"
|
|
exit 2
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
echo "Android Emulator started."
|
|
}
|
|
|
|
change_language_if_needed
|
|
sleep 1
|
|
enable_proxy_if_needed
|
|
sleep 1
|
|
install_google_play
|
|
sleep 1
|
|
check_emulator_popups
|