mirror of
https://github.com/budtmo/docker-android.git
synced 2026-07-31 04:07:25 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49b9c44f3a | ||
|
|
15cddf08c4 | ||
|
|
71949ee857 | ||
|
|
d0e3c619ca | ||
|
|
8dc87a3a3c | ||
|
|
76617374c0 | ||
|
|
70fc3b411c | ||
|
|
5e7ce8ce66 | ||
|
|
1d7121c41b | ||
|
|
0a1758091f | ||
|
|
eb045aa644 | ||
|
|
e5a9fe7031 | ||
|
|
fdb464781a | ||
|
|
2e5237ec80 | ||
|
|
b1f9ec5e79 | ||
|
|
1ac4a6484e | ||
|
|
f09e38c92c | ||
|
|
e051faf84a | ||
|
|
2461a6e832 | ||
|
|
20120f5c0a | ||
|
|
6a0f135247 | ||
|
|
b36847817d | ||
|
|
0196d23103 | ||
|
|
01d1c663c1 | ||
|
|
5b8ef77bba | ||
|
|
3b3746fff3 | ||
|
|
d9ba33c9fa | ||
|
|
94132acf41 | ||
|
|
86e7e0f8e5 |
+1
-1
@@ -28,7 +28,7 @@ Docker-Android's analytics are sent throughout Docker-Android's execution to Goo
|
||||
Docker-Android's analytics are accessible to Docker-Android's current maintainers. Contact [@budtmo](https://github.com/budtmo) if you are a maintainer and need access.
|
||||
|
||||
## How?
|
||||
The code is viewable in [this lines](./src/appium.sh#L225-L247).
|
||||
The code is viewable in [this script](./src/appium.sh).
|
||||
|
||||
## Opting out before starting Docker-Android
|
||||
Docker-Android analytics helps us, maintainers and leaving it on is appreciated. However, if you want to opt out and not send any information, you can do this by using passing environment variable GA=false to the Docker container.
|
||||
|
||||
@@ -249,13 +249,22 @@ The Emulator skins are taken from [Android Studio IDE](https://developer.android
|
||||
|
||||
Security
|
||||
--------
|
||||
All docker images are protected by [Polyverse](https://polyverse.io/) by scrambling the Linux packages. For more information please read [this](https://polyverse.io/how-it-works/)
|
||||
All docker images are protected by [Polyverse](https://polyverse.io/) by scrambling the Linux packages. For more information please visit [this link](https://youtu.be/eSZNP42n-pM)
|
||||
|
||||
Monitoring
|
||||
----------
|
||||
You can use [cadvisor](https://github.com/google/cadvisor) combined with influxdb / prometheus and grafana if needed to monitor each running container.
|
||||
|
||||
Users
|
||||
-----
|
||||
Docker-Android are being used by 100+ countries around the world.
|
||||
|
||||
[](https://datastudio.google.com/s/ht7HVKHKAQE)
|
||||
[](https://datastudio.google.com/s/ht7HVKHKAQE)
|
||||
|
||||
Stargazers over time
|
||||
--------------------
|
||||
|
||||
[](https://starchart.cc/budtmo/docker-android)
|
||||
|
||||
Special Thanks
|
||||
--------------
|
||||
|
||||
@@ -25,6 +25,7 @@ It is also possible to connect appium server that run inside docker-android with
|
||||
- SELENIUM_HOST="\<host\_ip\_address>"
|
||||
- SELENIUM_PORT=\<port\_number>
|
||||
- SELENIUM_TIMEOUT=\<timeout\_in\_seconds>
|
||||
- SELENIUM_PROXY_CLASS=\<selenium\_proxy\_class\_name>
|
||||
|
||||
To run tests for mobile browser, following parameter can be passed:
|
||||
|
||||
|
||||
@@ -13,6 +13,15 @@ You can enable proxy inside container and Android emulator by passing following
|
||||
- NO_PROXY="localhost"
|
||||
- ENABLE_PROXY_ON_EMULATOR=true
|
||||
|
||||
Proxy with authentication
|
||||
----
|
||||
|
||||
You can set proxy with authentication by passing following environment variable:
|
||||
|
||||
- HTTP_PROXY_USER="\<username>"
|
||||
- HTTPS_PROXY_PASSWORD="\<password>"
|
||||
|
||||
|
||||
Language
|
||||
--------
|
||||
|
||||
|
||||
+10
-1
@@ -38,10 +38,19 @@ The following instructions are used for OS X. You'll need [docker-machine-parall
|
||||

|
||||
|
||||
4. Enable kvm inside virtual machine
|
||||
|
||||
4.0 Check kvm version
|
||||
```bash
|
||||
# version
|
||||
$ 10.1
|
||||
```
|
||||
|
||||
Go to http://tinycorelinux.net/10.x/x86_64/tcz/ and check your kvm version, for version 10.1 is kvm-4.19.10-tinycore64.tcz
|
||||
|
||||
4.1. Run as an account other than root to install kvm packages using tce-load.
|
||||
```bash
|
||||
# su docker
|
||||
$ tce-load -wi kvm
|
||||
$ tce-load -wi kvm-4.19.10-tinycore64.tcz
|
||||
```
|
||||
|
||||
4.2. Run as root to load kvm module after kvm packages install.
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.17.1-p1
|
||||
FROM appium/appium:1.20.2-p0
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.17.1-p1
|
||||
FROM appium/appium:1.20.2-p0
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.17.1-p1
|
||||
FROM appium/appium:1.20.2-p0
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB |
+6
-4
@@ -149,9 +149,10 @@ def appium_run(avd_name: str):
|
||||
selenium_host = os.getenv('SELENIUM_HOST', '172.17.0.1')
|
||||
selenium_port = int(os.getenv('SELENIUM_PORT', 4444))
|
||||
selenium_timeout = int(os.getenv('SELENIUM_TIMEOUT', 30))
|
||||
selenium_proxy_class = os.getenv('SELENIUM_PROXY_CLASS', 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
|
||||
browser_name = default_web_browser if mobile_web_test else 'android'
|
||||
create_node_config(avd_name, browser_name, appium_host, appium_port, selenium_host, selenium_port,
|
||||
selenium_timeout)
|
||||
selenium_timeout, selenium_proxy_class)
|
||||
cmd += ' --nodeconfig {file}'.format(file=CONFIG_FILE)
|
||||
except ValueError as v_err:
|
||||
logger.error(v_err)
|
||||
@@ -160,7 +161,7 @@ def appium_run(avd_name: str):
|
||||
|
||||
|
||||
def create_node_config(avd_name: str, browser_name: str, appium_host: str, appium_port: int, selenium_host: str,
|
||||
selenium_port: int, selenium_timeout: int):
|
||||
selenium_port: int, selenium_timeout: int, selenium_proxy_class: str):
|
||||
"""
|
||||
Create custom node config file in json format to be able to connect with selenium server.
|
||||
|
||||
@@ -170,6 +171,7 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
|
||||
:param selenium_host: Host where selenium server is running
|
||||
:param selenium_port: Port number where selenium server is running
|
||||
:param selenium_timeout: Selenium session timeout in seconds
|
||||
:param selenium_proxy_class: Selenium Proxy class created in Selenium hub
|
||||
"""
|
||||
config = {
|
||||
'capabilities': [
|
||||
@@ -185,11 +187,11 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
|
||||
'configuration': {
|
||||
'cleanUpCycle': 2000,
|
||||
'timeout': selenium_timeout,
|
||||
'proxy': 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy',
|
||||
'proxy': selenium_proxy_class,
|
||||
'url': 'http://{host}:{port}/wd/hub'.format(host=appium_host, port=appium_port),
|
||||
'host': appium_host,
|
||||
'port': appium_port,
|
||||
'maxSession': 6,
|
||||
'maxSession': 1,
|
||||
'register': True,
|
||||
'registerCycle': 5000,
|
||||
'hubHost': selenium_host,
|
||||
|
||||
@@ -58,7 +58,8 @@ class TestAppium(TestCase):
|
||||
def test_config_creation(self):
|
||||
from src import CONFIG_FILE
|
||||
self.assertFalse(os.path.exists(CONFIG_FILE))
|
||||
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30)
|
||||
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30,
|
||||
'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
|
||||
self.assertTrue(os.path.exists(CONFIG_FILE))
|
||||
os.remove(CONFIG_FILE)
|
||||
|
||||
|
||||
+18
-11
@@ -31,13 +31,6 @@ function install_google_play () {
|
||||
adb install -r "/root/google_play_store.apk"
|
||||
}
|
||||
|
||||
function disable_animation () {
|
||||
# To improve performance
|
||||
adb shell "settings put global window_animation_scale 0.0"
|
||||
adb shell "settings put global transition_animation_scale 0.0"
|
||||
adb shell "settings put global animator_duration_scale 0.0"
|
||||
}
|
||||
|
||||
function enable_proxy_if_needed () {
|
||||
if [ "$ENABLE_PROXY_ON_EMULATOR" = true ]; then
|
||||
if [ ! -z "${HTTP_PROXY// }" ]; then
|
||||
@@ -56,9 +49,24 @@ function enable_proxy_if_needed () {
|
||||
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
|
||||
@@ -69,9 +77,8 @@ function enable_proxy_if_needed () {
|
||||
fi
|
||||
}
|
||||
|
||||
enable_proxy_if_needed
|
||||
sleep 1
|
||||
change_language_if_needed
|
||||
sleep 1
|
||||
enable_proxy_if_needed
|
||||
sleep 1
|
||||
install_google_play
|
||||
disable_animation
|
||||
|
||||
Reference in New Issue
Block a user