Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45e7df6db3 | ||
|
|
b9a7a486e1 | ||
|
|
90642436dd | ||
|
|
ef3c4e28c0 | ||
|
|
4d4c22124f | ||
|
|
7d63eac5ae | ||
|
|
fcb89f2702 | ||
|
|
226e088390 | ||
|
|
3574b9825b | ||
|
|
d34d635114 | ||
|
|
43d38adf76 | ||
|
|
a2d3c05a1c | ||
|
|
a4c7919209 | ||
|
|
2e59c45142 | ||
|
|
664ad07905 | ||
|
|
4b7de9d645 | ||
|
|
5d1cf8e671 | ||
|
|
9441d537b7 | ||
|
|
a40acea0ba | ||
|
|
54811c0c81 | ||
|
|
893abf99e4 | ||
|
|
14b6091277 | ||
|
|
5acbce6654 | ||
|
|
1c844033f6 | ||
|
|
83ba9bb79e | ||
|
|
712d3485ad | ||
|
|
04512a0d16 | ||
|
|
cf0ebd7eb9 |
@@ -9,7 +9,7 @@ Docker-Android's analytics record some shared information for every event:
|
||||
|
||||
- The Google Analytics version i.e. `1` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#v)
|
||||
- The Google Analytics anonymous IP setting is enabled i.e. `1` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#aip)
|
||||
- The Docker-Android analytics tracking ID e.g. `UA-128205228-1` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#tid)
|
||||
- The Docker-Android analytics tracking ID e.g. `UA-133466903-1` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#tid)
|
||||
- The release version of machine, e.g. `Linux_version_4.4.16-boot2docker_(gcc_version_4.9.2_(Debian_4.9.2-10)_)_#1_SMP_Fri_Jul_29_00:13:24_UTC_2016` This does not allow us to track individual users but does enable us to accurately measure user counts vs. event counts (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid)
|
||||
- Docker-Android analytics hit type, e.g. `event` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#t)
|
||||
- Application type, e.g. `Emulator` (https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#ec)
|
||||
|
||||
@@ -12,7 +12,7 @@ Unless required by applicable law or agreed to in writing, software distributed
|
||||
|
||||
|
||||
## Forks
|
||||
Additionally to Apache-2.0, when you fork this repo you are required to either remove our Google Analytics tracking ID: UA-128205228-1 or stop usage gathering completely.
|
||||
Additionally to Apache-2.0, when you fork this repo you are required to either remove our Google Analytics tracking ID: UA-133466903-1 or stop usage gathering completely.
|
||||
|
||||
## Data processing agreement
|
||||
By using this software you agree that the following non-PII (non personally identifiable information) data will be collected, processed and used by the maintainers for the purpose of improving the docker-android project. Anonymisation with respect of the IP address means that only the first two octets of the IP address are collected.
|
||||
|
||||
@@ -1 +1 @@
|
||||
Budi Utomo <budi.ut.1989@gmail.com>
|
||||
Budi Utomo <budtmo.os@gmail.com>
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
<img id="header" src="./images/logo_dockerandroid_small.png" />
|
||||
</p>
|
||||
|
||||
[](https://github.com/igrigorik/ga-beacon "Analytics")
|
||||
[](https://gitter.im/butomo1989/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://travis-ci.org/butomo1989/docker-android)
|
||||
[](https://codecov.io/gh/butomo1989/docker-android)
|
||||
[](https://github.com/igrigorik/ga-beacon "Analytics")
|
||||
[](https://gitter.im/budtmo/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://travis-ci.org/budtmo/docker-android)
|
||||
[](https://codecov.io/gh/budtmo/docker-android)
|
||||
[](https://www.codacy.com/app/butomo1989/docker-appium?utm_source=github.com&utm_medium=referral&utm_content=butomo1989/docker-appium&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/budtmo/docker-android/releases)
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fbudtmo%2Fdocker-android?ref=badge_shield)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
Docker-Android is a docker image built to be used for everything related to mobile website testing and Android project.
|
||||
|
||||
@@ -40,22 +43,24 @@ List of Docker images
|
||||
|
||||
|OS |Android |API |Browser |Browser version |Chromedriver |Image |Size |
|
||||
|:---|:---|:---|:---|:---|:---|:---|:---|
|
||||
|Linux|5.0.1|21|browser|37.0|2.21|butomo1989/docker-android-x86-5.0.1|[](https://microbadger.com/images/butomo1989/docker-android-x86-5.0.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|5.1.1|22|browser|39.0|2.13|butomo1989/docker-android-x86-5.1.1|[](https://microbadger.com/images/butomo1989/docker-android-x86-5.1.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|6.0|23|browser|44.0|2.18|butomo1989/docker-android-x86-6.0|[](https://microbadger.com/images/butomo1989/docker-android-x86-6.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|7.0|24|chrome|51.0|2.23|butomo1989/docker-android-x86-7.0|[](https://microbadger.com/images/butomo1989/docker-android-x86-7.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|7.1.1|25|chrome|55.0|2.28|butomo1989/docker-android-x86-7.1.1|[](https://microbadger.com/images/butomo1989/docker-android-x86-7.1.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|8.0|26|chrome|58.0|2.31|butomo1989/docker-android-x86-8.0|[](https://microbadger.com/images/butomo1989/docker-android-x86-8.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|8.1|27|chrome|61.0|2.33|butomo1989/docker-android-x86-8.1|[](https://microbadger.com/images/butomo1989/docker-android-x86-8.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|9.0|28|chrome|66.0|2.40|butomo1989/docker-android-x86-9.0|[](https://microbadger.com/images/butomo1989/docker-android-x86-9.0 "Get your own image badge on microbadger.com")|
|
||||
|All |-|-|-|-|-|butomo1989/docker-android-real-device|[](https://microbadger.com/images/butomo1989/docker-android-real-device "Get your own image badge on microbadger.com")|
|
||||
|Linux|All|All|All|All|All|butomo1989/docker-android-genymotion|[](https://microbadger.com/images/butomo1989/docker-android-genymotion "Get your own image badge on microbadger.com")|
|
||||
|Linux|5.0.1|21|browser|37.0|2.21|budtmo/docker-android-x86-5.0.1|[](https://microbadger.com/images/budtmo/docker-android-x86-5.0.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|5.1.1|22|browser|39.0|2.13|budtmo/docker-android-x86-5.1.1|[](https://microbadger.com/images/budtmo/docker-android-x86-5.1.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|6.0|23|browser|44.0|2.18|budtmo/docker-android-x86-6.0|[](https://microbadger.com/images/budtmo/docker-android-x86-6.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|7.0|24|chrome|51.0|2.23|budtmo/docker-android-x86-7.0|[](https://microbadger.com/images/budtmo/docker-android-x86-7.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|7.1.1|25|chrome|55.0|2.28|budtmo/docker-android-x86-7.1.1|[](https://microbadger.com/images/budtmo/docker-android-x86-7.1.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|8.0|26|chrome|58.0|2.31|budtmo/docker-android-x86-8.0|[](https://microbadger.com/images/budtmo/docker-android-x86-8.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|8.1|27|chrome|61.0|2.33|budtmo/docker-android-x86-8.1|[](https://microbadger.com/images/budtmo/docker-android-x86-8.1 "Get your own image badge on microbadger.com")|
|
||||
|Linux|9.0|28|chrome|66.0|2.40|budtmo/docker-android-x86-9.0|[](https://microbadger.com/images/budtmo/docker-android-x86-9.0 "Get your own image badge on microbadger.com")|
|
||||
|All |-|-|-|-|-|budtmo/docker-android-real-device|[](https://microbadger.com/images/budtmo/docker-android-real-device "Get your own image badge on microbadger.com")|
|
||||
|Linux|All|All|All|All|All|budtmo/docker-android-genymotion|[](https://microbadger.com/images/budtmo/docker-android-genymotion "Get your own image badge on microbadger.com")|
|
||||
|
||||
List of Devices
|
||||
---------------
|
||||
|
||||
Type | Device Name
|
||||
----- | -----
|
||||
Phone | Samsung Galaxy S7 Edge
|
||||
Phone | Samsung Galaxy S7
|
||||
Phone | Samsung Galaxy S6
|
||||
Phone | Nexus 4
|
||||
Phone | Nexus 5
|
||||
@@ -76,7 +81,7 @@ Quick Start
|
||||
- For ***Linux OS***, please use image name that contains "x86"
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
- For ***OSX*** and ***Windows OS***, please use Virtual Machine that support Virtualization with Ubuntu OS
|
||||
@@ -113,8 +118,35 @@ Docker-Android can be used for building Android project and executing its unit t
|
||||
2. Build the project
|
||||
|
||||
```bash
|
||||
docker run -it --rm -v $PWD/android-testing/ui/espresso/BasicSample:/root/tmp butomo1989/docker-android-x86-8.1 tmp/gradlew build
|
||||
docker run -it --rm -v $PWD/android-testing/ui/espresso/BasicSample:/root/tmp budtmo/docker-android-x86-8.1 tmp/gradlew build
|
||||
```
|
||||
|
||||
Control Android connected to host (Emulator or Real Device)
|
||||
-----------------------------------------------------------
|
||||
1. Create a docker container with this command
|
||||
|
||||
```
|
||||
$ docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 --name android-container-appium budtmo/docker-android-real-device
|
||||
```
|
||||
|
||||
2. Open noVNC [http://localhost:6080](http://localhost:6080)
|
||||
|
||||
3. Open terminal by clicking right on **noVNC** window >> **Terminal emulator**
|
||||
|
||||
4. To connect to host's adb (make sure your host have adb and connected to the device.)
|
||||
|
||||
```
|
||||
$ adb -H host.docker.internal devices
|
||||
```
|
||||
|
||||
To specify port, just add `-P port_number`
|
||||
|
||||
```
|
||||
$ adb -H host.docker.internal -P 5037 devices
|
||||
```
|
||||
|
||||
5. Now your container can access your host devices. But, you need to add `remoteAdbHost` and `adbPort` desired capabilities to make **Appium** can recognise those devices.
|
||||
|
||||
|
||||
Appium and Selenium Grid
|
||||
------------------------
|
||||
@@ -175,6 +207,11 @@ Google Play Services and Google Play Store
|
||||
|
||||
Docker-Android contains Google Play Service (v12.8.74) and Google Play Store (v11.0.50). Both applications are downloaded from [apklinker](https://www.apklinker.com/), so please be aware of it in case you use private/company account to that applications.
|
||||
|
||||
Jenkins
|
||||
-------
|
||||
|
||||
This [document](README_JENKINS.md) gives you information about custom plugin that supports Docker-Android.
|
||||
|
||||
VMWARE
|
||||
------
|
||||
|
||||
@@ -210,6 +247,8 @@ LICENSE
|
||||
--------------
|
||||
See [License](LICENSE.md)
|
||||
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fbudtmo%2Fdocker-android?ref=badge_large)
|
||||
|
||||
[appium]: <https://appium.io>
|
||||
[espresso]: <https://developer.android.com/training/testing/espresso/>
|
||||
[robotium]: <https://github.com/RobotiumTech/robotium>
|
||||
|
||||
@@ -4,7 +4,7 @@ Run Appium Server
|
||||
Appium is automation test framework to test mobile website and mobile application, including Android. To be able to use Appium, you need to run appium-server. You run Appium-Server inside docker-android container by ***opening port 4723*** and ***passing an environment variable APPIUM=true***.
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 -e DEVICE="Samsung Galaxy S6" -e APPIUM=true --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 -e DEVICE="Samsung Galaxy S6" -e APPIUM=true --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
### Share Volume
|
||||
@@ -12,7 +12,7 @@ docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 -
|
||||
If you want to use appium to test UI of your android application, you need to share volume where the APK is located to folder ***/root/tmp***.
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -v $PWD/example/sample_apk:/root/tmp -e DEVICE="Nexus 5" -e APPIUM=true -e CONNECT_TO_GRID=true -e APPIUM_HOST="127.0.0.1" -e APPIUM_PORT=4723 -e SELENIUM_HOST="172.17.0.1" -e SELENIUM_PORT=4444 --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -v $PWD/example/sample_apk:/root/tmp -e DEVICE="Nexus 5" -e APPIUM=true -e CONNECT_TO_GRID=true -e APPIUM_HOST="127.0.0.1" -e APPIUM_PORT=4723 -e SELENIUM_HOST="172.17.0.1" -e SELENIUM_PORT=4444 --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
### Connect to Selenium Grid
|
||||
@@ -30,7 +30,7 @@ To run tests for mobile browser, following parameter can be passed:
|
||||
- MOBILE\_WEB\_TEST=true
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" -e APPIUM=true -e CONNECT_TO_GRID=true -e APPIUM_HOST="127.0.0.1" -e APPIUM_PORT=4723 -e SELENIUM_HOST="172.17.0.1" -e SELENIUM_PORT=4444 -e MOBILE_WEB_TEST=true --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" -e APPIUM=true -e CONNECT_TO_GRID=true -e APPIUM_HOST="127.0.0.1" -e APPIUM_PORT=4723 -e SELENIUM_HOST="172.17.0.1" -e SELENIUM_PORT=4444 -e MOBILE_WEB_TEST=true --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
### Video Recording
|
||||
|
||||
@@ -19,7 +19,7 @@ the emulator can be brought up as follows:
|
||||
|
||||
# Assume app.apk is in /tmp
|
||||
docker run --privileged -d -e DEVICE="Samsung Galaxy S6" --volume /tmp:/APK \
|
||||
--name android_em butomo1989/docker-android-x86-8.1
|
||||
--name android_em budtmo/docker-android-x86-8.1
|
||||
|
||||
docker exec android_em adb wait-for-device
|
||||
docker exec android_em adb install /APK/app.apk
|
||||
|
||||
@@ -28,9 +28,14 @@ Custom Emulator Arguments
|
||||
If you want to add more arguments for running emulator, you can ***pass an environment variable EMULATOR_ARGS*** while running docker command.
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" -e EMULATOR_ARGS="-no-snapshot-load -partition-size 512" --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" -e EMULATOR_ARGS="-no-snapshot-load -partition-size 512" --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
SaltStack
|
||||
---------
|
||||
|
||||
You can enable [SaltStack](https://github.com/saltstack/salt) to control running containers by passing environment variable SALT_MASTER=<ip_address_of_salt_master>.
|
||||
|
||||
Back & Restore
|
||||
--------------
|
||||
|
||||
@@ -40,7 +45,7 @@ If you want to backup/reuse the avds created with furture upgrades or for replic
|
||||
- -v local_backup/android_emulator:/root/android_emulator
|
||||
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -v local_backup/.android:/root/.android -v local_backup/android_emulator:local_backup/android_emulator -e DEVICE="Nexus 5" --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 4723:4723 -p 5554:5554 -p 5555:5555 -v local_backup/.android:/root/.android -v local_backup/android_emulator:local_backup/android_emulator -e DEVICE="Nexus 5" --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
For the first run, this will create a new avd and all the changes will be accessible in the `local_backup` directory. Now for all future runs, it will reuse the avds. Even this should work with new releases of `docker-android`
|
||||
|
||||
@@ -13,18 +13,14 @@ You can easily scale your Appium tests on Genymotion Android virtual devices in
|
||||
export PASS="xxx"
|
||||
export LICENSE="xxx"
|
||||
|
||||
docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -e TYPE=SaaS -e USER=$USER -e PASS=$PASS -e LICENSE=$LICENSE butomo1989/docker-android-genymotion
|
||||
docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -e TYPE=SaaS -e USER=$USER -e PASS=$PASS -e LICENSE=$LICENSE budtmo/docker-android-genymotion
|
||||
```
|
||||
|
||||
<p align="center">
|
||||
<a href="https://youtu.be/jXhUEyaVeMY"><img src="./images/Genymotion_cloud.png" alt="Docker-Android supports Genymotion Cloud" width="600"></a>
|
||||
</p>
|
||||
|
||||
2. On PaaS (AWS) <br />
|
||||
Use [aws.json](genymotion/example/sample_devices/aws.json) to define configuration of EC2 instance and run following command:
|
||||
|
||||
```bash
|
||||
docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -v ~/.aws:/root/.aws -e TYPE=aws butomo1989/docker-android-genymotion
|
||||
docker run -it --rm -p 4723:4723 -v $PWD/genymotion/example/sample_devices:/root/tmp -v ~/.aws:/root/.aws -e TYPE=aws budtmo/docker-android-genymotion
|
||||
```
|
||||
|
||||
You can also use [this docker-compose file](genymotion/example/geny.yml).
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
Jenkins
|
||||
-------
|
||||
|
||||
Following Jenkins plug-ins supports Docker-Android to optimize your work.
|
||||
|
||||
1. Live preview: [budtmo/jenkins-plugin-vncviewer-docker-container](https://github.com/budtmo/vncviewer-docker-container-plugin)
|
||||
@@ -65,7 +65,7 @@ The following instructions are used for OS X. You'll need [docker-machine-parall
|
||||
5. You may now run a docker container
|
||||
5.1. Let's run a docker image for an emulator with x86 processor.
|
||||
```bash
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container butomo1989/docker-android-x86-8.1
|
||||
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1
|
||||
```
|
||||
|
||||
When the services inside this docker container are running, connect to http://10.211.55.3:6080/vnc.html (the IP we got when the docker machine was created) and login. The emulator with x86 processor should be running on screen.
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<d:devices xmlns:d="http://schemas.android.com/sdk/devices/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<d:device>
|
||||
<d:name>Samsung Galaxy S7</d:name>
|
||||
<d:manufacturer>User</d:manufacturer>
|
||||
<d:meta/>
|
||||
<d:hardware>
|
||||
<d:screen>
|
||||
<d:screen-size>large</d:screen-size>
|
||||
<d:diagonal-length>5.10</d:diagonal-length>
|
||||
<d:pixel-density>xxxhdpi</d:pixel-density>
|
||||
<d:screen-ratio>long</d:screen-ratio>
|
||||
<d:dimensions>
|
||||
<d:x-dimension>1440</d:x-dimension>
|
||||
<d:y-dimension>2560</d:y-dimension>
|
||||
</d:dimensions>
|
||||
<d:xdpi>575.92</d:xdpi>
|
||||
<d:ydpi>575.92</d:ydpi>
|
||||
<d:touch>
|
||||
<d:multitouch>jazz-hands</d:multitouch>
|
||||
<d:mechanism>finger</d:mechanism>
|
||||
<d:screen-type>capacitive</d:screen-type>
|
||||
</d:touch>
|
||||
</d:screen>
|
||||
<d:networking>
|
||||
Bluetooth
|
||||
Wifi
|
||||
NFC
|
||||
</d:networking>
|
||||
<d:sensors>
|
||||
Accelerometer
|
||||
Barometer
|
||||
Compass
|
||||
GPS
|
||||
Gyroscope
|
||||
LightSensor
|
||||
ProximitySensor
|
||||
</d:sensors>
|
||||
<d:mic>true</d:mic>
|
||||
<d:camera>
|
||||
<d:location>back</d:location>
|
||||
<d:autofocus>true</d:autofocus>
|
||||
<d:flash>true</d:flash>
|
||||
</d:camera>
|
||||
<d:camera>
|
||||
<d:location>front</d:location>
|
||||
<d:autofocus>true</d:autofocus>
|
||||
<d:flash>true</d:flash>
|
||||
</d:camera>
|
||||
<d:keyboard>qwerty</d:keyboard>
|
||||
<d:nav>nonav</d:nav>
|
||||
<d:ram unit="GiB">4</d:ram>
|
||||
<d:buttons>hard</d:buttons>
|
||||
<d:internal-storage unit="GiB">
|
||||
4
|
||||
</d:internal-storage>
|
||||
<d:removable-storage unit="TiB"/>
|
||||
<d:cpu>Generic CPU</d:cpu>
|
||||
<d:gpu>Generic GPU</d:gpu>
|
||||
<d:abi>
|
||||
armeabi-v7a
|
||||
x86
|
||||
x86_64
|
||||
</d:abi>
|
||||
<d:dock/>
|
||||
<d:power-type>battery</d:power-type>
|
||||
</d:hardware>
|
||||
<d:software>
|
||||
<d:api-level>-</d:api-level>
|
||||
<d:live-wallpaper-support>true</d:live-wallpaper-support>
|
||||
<d:bluetooth-profiles/>
|
||||
<d:gl-version>2.0</d:gl-version>
|
||||
<d:gl-extensions/>
|
||||
<d:status-bar>false</d:status-bar>
|
||||
</d:software>
|
||||
<d:state default="true" name="Portrait">
|
||||
<d:description>The device in portrait orientation</d:description>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:keyboard-state>keyshidden</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Landscape">
|
||||
<d:description>The device in landscape orientation</d:description>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
<d:keyboard-state>keyshidden</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Portrait with keyboard">
|
||||
<d:description>The device in portrait orientation with a keyboard open</d:description>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:keyboard-state>keysexposed</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Landscape with keyboard">
|
||||
<d:description>The device in landscape orientation with a keyboard open</d:description>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
<d:keyboard-state>keysexposed</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
</d:device>
|
||||
</d:devices>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<d:devices xmlns:d="http://schemas.android.com/sdk/devices/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<d:device>
|
||||
<d:name>Samsung Galaxy S7 Edge</d:name>
|
||||
<d:manufacturer>User</d:manufacturer>
|
||||
<d:meta/>
|
||||
<d:hardware>
|
||||
<d:screen>
|
||||
<d:screen-size>large</d:screen-size>
|
||||
<d:diagonal-length>5.50</d:diagonal-length>
|
||||
<d:pixel-density>xxxhdpi</d:pixel-density>
|
||||
<d:screen-ratio>long</d:screen-ratio>
|
||||
<d:dimensions>
|
||||
<d:x-dimension>1440</d:x-dimension>
|
||||
<d:y-dimension>2560</d:y-dimension>
|
||||
</d:dimensions>
|
||||
<d:xdpi>575.92</d:xdpi>
|
||||
<d:ydpi>575.92</d:ydpi>
|
||||
<d:touch>
|
||||
<d:multitouch>jazz-hands</d:multitouch>
|
||||
<d:mechanism>finger</d:mechanism>
|
||||
<d:screen-type>capacitive</d:screen-type>
|
||||
</d:touch>
|
||||
</d:screen>
|
||||
<d:networking>
|
||||
Bluetooth
|
||||
Wifi
|
||||
NFC
|
||||
</d:networking>
|
||||
<d:sensors>
|
||||
Accelerometer
|
||||
Barometer
|
||||
Compass
|
||||
GPS
|
||||
Gyroscope
|
||||
LightSensor
|
||||
ProximitySensor
|
||||
</d:sensors>
|
||||
<d:mic>true</d:mic>
|
||||
<d:camera>
|
||||
<d:location>back</d:location>
|
||||
<d:autofocus>true</d:autofocus>
|
||||
<d:flash>true</d:flash>
|
||||
</d:camera>
|
||||
<d:camera>
|
||||
<d:location>front</d:location>
|
||||
<d:autofocus>true</d:autofocus>
|
||||
<d:flash>true</d:flash>
|
||||
</d:camera>
|
||||
<d:keyboard>qwerty</d:keyboard>
|
||||
<d:nav>nonav</d:nav>
|
||||
<d:ram unit="GiB">4</d:ram>
|
||||
<d:buttons>hard</d:buttons>
|
||||
<d:internal-storage unit="GiB">
|
||||
4
|
||||
</d:internal-storage>
|
||||
<d:removable-storage unit="TiB"/>
|
||||
<d:cpu>Generic CPU</d:cpu>
|
||||
<d:gpu>Generic GPU</d:gpu>
|
||||
<d:abi>
|
||||
armeabi-v7a
|
||||
x86
|
||||
x86_64
|
||||
</d:abi>
|
||||
<d:dock/>
|
||||
<d:power-type>battery</d:power-type>
|
||||
</d:hardware>
|
||||
<d:software>
|
||||
<d:api-level>-</d:api-level>
|
||||
<d:live-wallpaper-support>true</d:live-wallpaper-support>
|
||||
<d:bluetooth-profiles/>
|
||||
<d:gl-version>2.0</d:gl-version>
|
||||
<d:gl-extensions/>
|
||||
<d:status-bar>false</d:status-bar>
|
||||
</d:software>
|
||||
<d:state default="true" name="Portrait">
|
||||
<d:description>The device in portrait orientation</d:description>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:keyboard-state>keyshidden</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Landscape">
|
||||
<d:description>The device in landscape orientation</d:description>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
<d:keyboard-state>keyshidden</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Portrait with keyboard">
|
||||
<d:description>The device in portrait orientation with a keyboard open</d:description>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:keyboard-state>keysexposed</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
<d:state name="Landscape with keyboard">
|
||||
<d:description>The device in landscape orientation with a keyboard open</d:description>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
<d:keyboard-state>keysexposed</d:keyboard-state>
|
||||
<d:nav-state>navhidden</d:nav-state>
|
||||
</d:state>
|
||||
</d:device>
|
||||
</d:devices>
|
||||
@@ -0,0 +1,4 @@
|
||||
[port-button2.png]
|
||||
rotate=rotate(2)
|
||||
[port-button3.png]
|
||||
rotate=rotate(3)
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1,21 @@
|
||||
hw.lcd.density = 577
|
||||
|
||||
hw.trackBall = no
|
||||
|
||||
hw.keyboard = yes
|
||||
|
||||
hw.dPad = no
|
||||
|
||||
hw.camera = yes
|
||||
|
||||
hw.gps = yes
|
||||
|
||||
hw.battery = yes
|
||||
|
||||
hw.accelerometer = yes
|
||||
|
||||
hw.sdCard = yes
|
||||
|
||||
hw.touchScreen = yes
|
||||
|
||||
hw.gsmModem = yes
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 392 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1,449 @@
|
||||
parts {
|
||||
portrait {
|
||||
background {
|
||||
image device_Port.png
|
||||
}
|
||||
buttons {
|
||||
back {
|
||||
image port-button3.png
|
||||
x 686
|
||||
y 3158
|
||||
}
|
||||
home {
|
||||
image port-button2.png
|
||||
x 1015
|
||||
y 3139
|
||||
}
|
||||
soft-left {
|
||||
image port-button1.png
|
||||
x 1596
|
||||
y 3158
|
||||
}
|
||||
}
|
||||
}
|
||||
landscape {
|
||||
background {
|
||||
image device_Land.png
|
||||
}
|
||||
buttons {
|
||||
soft-left {
|
||||
image land-button3.png
|
||||
x 3437
|
||||
y 1523
|
||||
}
|
||||
home {
|
||||
image land-button2.png
|
||||
x 3416
|
||||
y 959
|
||||
}
|
||||
back {
|
||||
image land-button1.png
|
||||
x 3437
|
||||
y 617
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
device {
|
||||
display {
|
||||
width 1440
|
||||
height 2560
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
}
|
||||
|
||||
controls {
|
||||
background {
|
||||
image controls.png
|
||||
}
|
||||
buttons {
|
||||
camera {
|
||||
image button.png
|
||||
x 8
|
||||
y 8
|
||||
}
|
||||
volume-down {
|
||||
image button.png
|
||||
x 214
|
||||
y 8
|
||||
}
|
||||
volume-up {
|
||||
image button.png
|
||||
x 419
|
||||
y 8
|
||||
}
|
||||
power {
|
||||
image button.png
|
||||
x 624
|
||||
y 8
|
||||
}
|
||||
|
||||
phone-dial {
|
||||
image button.png
|
||||
x 8
|
||||
y 273
|
||||
}
|
||||
phone-hangup {
|
||||
image button.png
|
||||
x 624
|
||||
y 273
|
||||
}
|
||||
home {
|
||||
image button.png
|
||||
x 8
|
||||
y 537
|
||||
}
|
||||
menu {
|
||||
image button.png
|
||||
x 214
|
||||
y 537
|
||||
}
|
||||
back {
|
||||
image button.png
|
||||
x 419
|
||||
y 537
|
||||
}
|
||||
search {
|
||||
image button.png
|
||||
x 624
|
||||
y 537
|
||||
}
|
||||
|
||||
dpad-left {
|
||||
image arrow_left.png
|
||||
x 284
|
||||
y 201
|
||||
}
|
||||
dpad-up {
|
||||
image arrow_up.png
|
||||
x 8
|
||||
y 678
|
||||
}
|
||||
dpad-down {
|
||||
image arrow_down.png
|
||||
x 214
|
||||
y 678
|
||||
}
|
||||
dpad-right {
|
||||
image arrow_right.png
|
||||
x 450
|
||||
y 216
|
||||
}
|
||||
dpad-select {
|
||||
image select.png
|
||||
x 284
|
||||
y 299
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
keyboard {
|
||||
background {
|
||||
image keyboard.png
|
||||
}
|
||||
buttons {
|
||||
1 {
|
||||
image key-num.png
|
||||
x 17
|
||||
y 11
|
||||
}
|
||||
2 {
|
||||
image key-num.png
|
||||
x 149
|
||||
y 11
|
||||
}
|
||||
3 {
|
||||
image key-num.png
|
||||
x 282
|
||||
y 11
|
||||
}
|
||||
4 {
|
||||
image key-num.png
|
||||
x 413
|
||||
y 11
|
||||
}
|
||||
5 {
|
||||
image key-num.png
|
||||
x 545
|
||||
y 11
|
||||
}
|
||||
6 {
|
||||
image key-num.png
|
||||
x 677
|
||||
y 11
|
||||
}
|
||||
7 {
|
||||
image key-num.png
|
||||
x 809
|
||||
y 11
|
||||
}
|
||||
8 {
|
||||
image key-num.png
|
||||
x 941
|
||||
y 11
|
||||
}
|
||||
9 {
|
||||
image key-num.png
|
||||
x 1072
|
||||
y 11
|
||||
}
|
||||
0 {
|
||||
image key-num.png
|
||||
x 1204
|
||||
y 11
|
||||
}
|
||||
|
||||
|
||||
q {
|
||||
image key.png
|
||||
x 17
|
||||
y 78
|
||||
}
|
||||
w {
|
||||
image key.png
|
||||
x 149
|
||||
y 78
|
||||
}
|
||||
e {
|
||||
image key.png
|
||||
x 281
|
||||
y 78
|
||||
}
|
||||
r {
|
||||
image key.png
|
||||
x 412
|
||||
y 78
|
||||
}
|
||||
t {
|
||||
image key.png
|
||||
x 544
|
||||
y 78
|
||||
}
|
||||
y {
|
||||
image key.png
|
||||
x 676
|
||||
y 78
|
||||
}
|
||||
u {
|
||||
image key.png
|
||||
x 808
|
||||
y 78
|
||||
}
|
||||
i {
|
||||
image key.png
|
||||
x 940
|
||||
y 78
|
||||
}
|
||||
o {
|
||||
image key.png
|
||||
x 1071
|
||||
y 78
|
||||
}
|
||||
p {
|
||||
image key.png
|
||||
x 1201
|
||||
y 78
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
image key.png
|
||||
x 83
|
||||
y 161
|
||||
}
|
||||
s {
|
||||
image key.png
|
||||
x 215
|
||||
y 161
|
||||
}
|
||||
d {
|
||||
image key.png
|
||||
x 347
|
||||
y 161
|
||||
}
|
||||
f {
|
||||
image key.png
|
||||
x 479
|
||||
y 161
|
||||
}
|
||||
g {
|
||||
image key.png
|
||||
x 610
|
||||
y 161
|
||||
}
|
||||
h {
|
||||
image key.png
|
||||
x 742
|
||||
y 161
|
||||
}
|
||||
j {
|
||||
image key.png
|
||||
x 874
|
||||
y 161
|
||||
}
|
||||
k {
|
||||
image key.png
|
||||
x 1006
|
||||
y 161
|
||||
}
|
||||
l {
|
||||
image key.png
|
||||
x 1138
|
||||
y 161
|
||||
}
|
||||
|
||||
|
||||
CAP {
|
||||
image key2.png
|
||||
x 17
|
||||
y 244
|
||||
}
|
||||
z {
|
||||
image key.png
|
||||
x 215
|
||||
y 244
|
||||
}
|
||||
x {
|
||||
image key.png
|
||||
x 347
|
||||
y 244
|
||||
}
|
||||
c {
|
||||
image key.png
|
||||
x 479
|
||||
y 244
|
||||
}
|
||||
v {
|
||||
image key.png
|
||||
x 610
|
||||
y 244
|
||||
}
|
||||
b {
|
||||
image key.png
|
||||
x 742
|
||||
y 244
|
||||
}
|
||||
n {
|
||||
image key.png
|
||||
x 874
|
||||
y 244
|
||||
}
|
||||
m {
|
||||
image key.png
|
||||
x 1006
|
||||
y 244
|
||||
}
|
||||
|
||||
DEL {
|
||||
image key2.png
|
||||
x 1138
|
||||
y 244
|
||||
}
|
||||
|
||||
|
||||
|
||||
SYM {
|
||||
image key2.png
|
||||
x 17
|
||||
y 326
|
||||
}
|
||||
T {
|
||||
image key.png
|
||||
x 216
|
||||
y 326
|
||||
}
|
||||
SPACE {
|
||||
image spacebar.png
|
||||
x 347
|
||||
y 326
|
||||
}
|
||||
PERIOD {
|
||||
image key.png
|
||||
x 1006
|
||||
y 326
|
||||
}
|
||||
NEXT {
|
||||
image key2.png
|
||||
x 1138
|
||||
y 326
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layouts {
|
||||
portrait {
|
||||
width 4120
|
||||
height 3477
|
||||
color 0xe0e0e0
|
||||
event EV_SW:0:1
|
||||
|
||||
part1 {
|
||||
name portrait
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
part3 {
|
||||
name device
|
||||
x 456
|
||||
y 498
|
||||
}
|
||||
part4 {
|
||||
name controls
|
||||
x 2660
|
||||
y 883
|
||||
}
|
||||
part5 {
|
||||
name keyboard
|
||||
x 2385
|
||||
y 1847
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
landscape {
|
||||
width 4120
|
||||
height 3477
|
||||
color 0xe0e0e0
|
||||
event EV_SW:0:0
|
||||
dpad-rotation 3
|
||||
|
||||
part1 {
|
||||
name landscape
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
|
||||
part2 {
|
||||
name device
|
||||
x 777
|
||||
y 1854
|
||||
rotation 3s
|
||||
}
|
||||
|
||||
part3 {
|
||||
name controls
|
||||
x 2506
|
||||
y 2072
|
||||
}
|
||||
|
||||
part4 {
|
||||
name keyboard
|
||||
x 744
|
||||
y 2213
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
keyboard {
|
||||
charmap qwerty2
|
||||
}
|
||||
|
||||
network {
|
||||
speed full
|
||||
delay none
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
name=Galaxy_S7
|
||||
vendor=Samsung Electronics Co., Inc.
|
||||
description=Android OS, v6.0 (Marshmallow) device without physical keyboard and three way navigation.
|
||||
|
||||
# default skin
|
||||
skin=Galaxy_S7
|
||||
|
||||
# version of the Android platform on which this add-on is built.
|
||||
api=9
|
||||
|
||||
# revision of the add-on
|
||||
revision=1
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,4 @@
|
||||
[port-button2.png]
|
||||
rotate=rotate(2)
|
||||
[port-button3.png]
|
||||
rotate=rotate(3)
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 889 KiB |
|
After Width: | Height: | Size: 856 KiB |
@@ -0,0 +1,21 @@
|
||||
hw.lcd.density = 534
|
||||
|
||||
hw.trackBall = no
|
||||
|
||||
hw.keyboard = yes
|
||||
|
||||
hw.dPad = no
|
||||
|
||||
hw.camera = yes
|
||||
|
||||
hw.gps = yes
|
||||
|
||||
hw.battery = yes
|
||||
|
||||
hw.accelerometer = yes
|
||||
|
||||
hw.sdCard = yes
|
||||
|
||||
hw.touchScreen = yes
|
||||
|
||||
hw.gsmModem = yes
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 392 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,449 @@
|
||||
parts {
|
||||
portrait {
|
||||
background {
|
||||
image device_Port.png
|
||||
}
|
||||
buttons {
|
||||
back {
|
||||
image port-button3.png
|
||||
x 708
|
||||
y 3146
|
||||
}
|
||||
home {
|
||||
image port-button2.png
|
||||
x 1026
|
||||
y 3124
|
||||
}
|
||||
soft-left {
|
||||
image port-button1.png
|
||||
x 1550
|
||||
y 3146
|
||||
}
|
||||
}
|
||||
}
|
||||
landscape {
|
||||
background {
|
||||
image device_Land.png
|
||||
}
|
||||
buttons {
|
||||
soft-left {
|
||||
image land-button3.png
|
||||
x 3424
|
||||
y 1511
|
||||
}
|
||||
home {
|
||||
image land-button2.png
|
||||
x 3401
|
||||
y 983
|
||||
}
|
||||
back {
|
||||
image land-button1.png
|
||||
x 3424
|
||||
y 671
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
device {
|
||||
display {
|
||||
width 1440
|
||||
height 2560
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
}
|
||||
|
||||
controls {
|
||||
background {
|
||||
image controls.png
|
||||
}
|
||||
buttons {
|
||||
camera {
|
||||
image button.png
|
||||
x 8
|
||||
y 8
|
||||
}
|
||||
volume-down {
|
||||
image button.png
|
||||
x 214
|
||||
y 8
|
||||
}
|
||||
volume-up {
|
||||
image button.png
|
||||
x 419
|
||||
y 8
|
||||
}
|
||||
power {
|
||||
image button.png
|
||||
x 624
|
||||
y 8
|
||||
}
|
||||
|
||||
phone-dial {
|
||||
image button.png
|
||||
x 8
|
||||
y 273
|
||||
}
|
||||
phone-hangup {
|
||||
image button.png
|
||||
x 624
|
||||
y 273
|
||||
}
|
||||
home {
|
||||
image button.png
|
||||
x 8
|
||||
y 537
|
||||
}
|
||||
menu {
|
||||
image button.png
|
||||
x 214
|
||||
y 537
|
||||
}
|
||||
back {
|
||||
image button.png
|
||||
x 419
|
||||
y 537
|
||||
}
|
||||
search {
|
||||
image button.png
|
||||
x 624
|
||||
y 537
|
||||
}
|
||||
|
||||
dpad-left {
|
||||
image arrow_left.png
|
||||
x 284
|
||||
y 201
|
||||
}
|
||||
dpad-up {
|
||||
image arrow_up.png
|
||||
x 8
|
||||
y 678
|
||||
}
|
||||
dpad-down {
|
||||
image arrow_down.png
|
||||
x 214
|
||||
y 678
|
||||
}
|
||||
dpad-right {
|
||||
image arrow_right.png
|
||||
x 450
|
||||
y 216
|
||||
}
|
||||
dpad-select {
|
||||
image select.png
|
||||
x 284
|
||||
y 299
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
keyboard {
|
||||
background {
|
||||
image keyboard.png
|
||||
}
|
||||
buttons {
|
||||
1 {
|
||||
image key-num.png
|
||||
x 17
|
||||
y 11
|
||||
}
|
||||
2 {
|
||||
image key-num.png
|
||||
x 149
|
||||
y 11
|
||||
}
|
||||
3 {
|
||||
image key-num.png
|
||||
x 282
|
||||
y 11
|
||||
}
|
||||
4 {
|
||||
image key-num.png
|
||||
x 413
|
||||
y 11
|
||||
}
|
||||
5 {
|
||||
image key-num.png
|
||||
x 545
|
||||
y 11
|
||||
}
|
||||
6 {
|
||||
image key-num.png
|
||||
x 677
|
||||
y 11
|
||||
}
|
||||
7 {
|
||||
image key-num.png
|
||||
x 809
|
||||
y 11
|
||||
}
|
||||
8 {
|
||||
image key-num.png
|
||||
x 941
|
||||
y 11
|
||||
}
|
||||
9 {
|
||||
image key-num.png
|
||||
x 1072
|
||||
y 11
|
||||
}
|
||||
0 {
|
||||
image key-num.png
|
||||
x 1204
|
||||
y 11
|
||||
}
|
||||
|
||||
|
||||
q {
|
||||
image key.png
|
||||
x 17
|
||||
y 78
|
||||
}
|
||||
w {
|
||||
image key.png
|
||||
x 149
|
||||
y 78
|
||||
}
|
||||
e {
|
||||
image key.png
|
||||
x 281
|
||||
y 78
|
||||
}
|
||||
r {
|
||||
image key.png
|
||||
x 412
|
||||
y 78
|
||||
}
|
||||
t {
|
||||
image key.png
|
||||
x 544
|
||||
y 78
|
||||
}
|
||||
y {
|
||||
image key.png
|
||||
x 676
|
||||
y 78
|
||||
}
|
||||
u {
|
||||
image key.png
|
||||
x 808
|
||||
y 78
|
||||
}
|
||||
i {
|
||||
image key.png
|
||||
x 940
|
||||
y 78
|
||||
}
|
||||
o {
|
||||
image key.png
|
||||
x 1071
|
||||
y 78
|
||||
}
|
||||
p {
|
||||
image key.png
|
||||
x 1201
|
||||
y 78
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
image key.png
|
||||
x 83
|
||||
y 161
|
||||
}
|
||||
s {
|
||||
image key.png
|
||||
x 215
|
||||
y 161
|
||||
}
|
||||
d {
|
||||
image key.png
|
||||
x 347
|
||||
y 161
|
||||
}
|
||||
f {
|
||||
image key.png
|
||||
x 479
|
||||
y 161
|
||||
}
|
||||
g {
|
||||
image key.png
|
||||
x 610
|
||||
y 161
|
||||
}
|
||||
h {
|
||||
image key.png
|
||||
x 742
|
||||
y 161
|
||||
}
|
||||
j {
|
||||
image key.png
|
||||
x 874
|
||||
y 161
|
||||
}
|
||||
k {
|
||||
image key.png
|
||||
x 1006
|
||||
y 161
|
||||
}
|
||||
l {
|
||||
image key.png
|
||||
x 1138
|
||||
y 161
|
||||
}
|
||||
|
||||
|
||||
CAP {
|
||||
image key2.png
|
||||
x 17
|
||||
y 244
|
||||
}
|
||||
z {
|
||||
image key.png
|
||||
x 215
|
||||
y 244
|
||||
}
|
||||
x {
|
||||
image key.png
|
||||
x 347
|
||||
y 244
|
||||
}
|
||||
c {
|
||||
image key.png
|
||||
x 479
|
||||
y 244
|
||||
}
|
||||
v {
|
||||
image key.png
|
||||
x 610
|
||||
y 244
|
||||
}
|
||||
b {
|
||||
image key.png
|
||||
x 742
|
||||
y 244
|
||||
}
|
||||
n {
|
||||
image key.png
|
||||
x 874
|
||||
y 244
|
||||
}
|
||||
m {
|
||||
image key.png
|
||||
x 1006
|
||||
y 244
|
||||
}
|
||||
|
||||
DEL {
|
||||
image key2.png
|
||||
x 1138
|
||||
y 244
|
||||
}
|
||||
|
||||
|
||||
|
||||
SYM {
|
||||
image key2.png
|
||||
x 17
|
||||
y 326
|
||||
}
|
||||
T {
|
||||
image key.png
|
||||
x 216
|
||||
y 326
|
||||
}
|
||||
SPACE {
|
||||
image spacebar.png
|
||||
x 347
|
||||
y 326
|
||||
}
|
||||
PERIOD {
|
||||
image key.png
|
||||
x 1006
|
||||
y 326
|
||||
}
|
||||
NEXT {
|
||||
image key2.png
|
||||
x 1138
|
||||
y 326
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layouts {
|
||||
portrait {
|
||||
width 4120
|
||||
height 3477
|
||||
color 0xe0e0e0
|
||||
event EV_SW:0:1
|
||||
|
||||
part1 {
|
||||
name portrait
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
|
||||
|
||||
|
||||
part3 {
|
||||
name device
|
||||
x 456
|
||||
y 498
|
||||
}
|
||||
part4 {
|
||||
name controls
|
||||
x 2660
|
||||
y 883
|
||||
}
|
||||
part5 {
|
||||
name keyboard
|
||||
x 2385
|
||||
y 1847
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
landscape {
|
||||
width 4120
|
||||
height 3477
|
||||
color 0xe0e0e0
|
||||
event EV_SW:0:0
|
||||
dpad-rotation 3
|
||||
|
||||
part1 {
|
||||
name landscape
|
||||
x 0
|
||||
y 0
|
||||
}
|
||||
|
||||
part2 {
|
||||
name device
|
||||
x 777
|
||||
y 1854
|
||||
rotation 3s
|
||||
}
|
||||
|
||||
part3 {
|
||||
name controls
|
||||
x 2506
|
||||
y 2072
|
||||
}
|
||||
|
||||
part4 {
|
||||
name keyboard
|
||||
x 744
|
||||
y 2213
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
keyboard {
|
||||
charmap qwerty2
|
||||
}
|
||||
|
||||
network {
|
||||
speed full
|
||||
delay none
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
name=Galaxy_S7_Edge
|
||||
vendor=Samsung Electronics Co., Inc.
|
||||
description=Android OS, v6.0 (Marshmallow) device without physical keyboard and three way navigation.
|
||||
|
||||
# default skin
|
||||
skin=Galaxy_S7
|
||||
|
||||
# version of the Android platform on which this add-on is built.
|
||||
api=9
|
||||
|
||||
# revision of the add-on
|
||||
revision=1
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
@@ -10,10 +10,10 @@ services:
|
||||
ports:
|
||||
- 4444:4444
|
||||
|
||||
# There is a bug for using appium. Issue: https://github.com/butomo1989/docker-android/issues/73
|
||||
# There is a bug for using appium. Issue: https://github.com/budtmo/docker-android/issues/73
|
||||
# Real devices
|
||||
#real_device:
|
||||
# image: butomo1989/docker-android-real-device
|
||||
# image: budtmo/docker-android-real-device
|
||||
# privileged: true
|
||||
# depends_on:
|
||||
# - selenium_hub
|
||||
@@ -49,7 +49,7 @@ services:
|
||||
|
||||
# Docker-Android for Android application testing
|
||||
nexus_7.1.1:
|
||||
image: butomo1989/docker-android-x86-7.1.1
|
||||
image: budtmo/docker-android-x86-7.1.1
|
||||
privileged: true
|
||||
# Increase scale number if needed
|
||||
scale: 1
|
||||
@@ -72,7 +72,7 @@ services:
|
||||
# Docker-Android for mobile website testing with chrome browser
|
||||
# Chrome browser exists only for version 7.0 and 7.1.1
|
||||
samsung_galaxy_web_7.1.1:
|
||||
image: butomo1989/docker-android-x86-8.1
|
||||
image: budtmo/docker-android-x86-8.1
|
||||
privileged: true
|
||||
# Increase scale number if needed
|
||||
scale: 1
|
||||
@@ -94,7 +94,7 @@ services:
|
||||
# Docker-Android for mobile website testing with default browser
|
||||
# Default browser exists only for version 5.0.1, 5.1.1 and 6.0
|
||||
samsung_galaxy_web_5.1.1:
|
||||
image: butomo1989/docker-android-x86-5.1.1
|
||||
image: budtmo/docker-android-x86-5.1.1
|
||||
privileged: true
|
||||
# Increase scale number if needed
|
||||
scale: 1
|
||||
|
||||
@@ -7,7 +7,7 @@ resource "docker_image" "selenium_hub_img" {
|
||||
}
|
||||
|
||||
resource "docker_image" "docker_android_img" {
|
||||
name = "butomo1989/docker-android-x86-8.1:latest"
|
||||
name = "budtmo/docker-android-x86-8.1:latest"
|
||||
}
|
||||
|
||||
resource "docker_network" "private_network" {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM appium/appium:1.10.0-p0
|
||||
FROM appium/appium:1.11.1-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
#=============
|
||||
# Set WORKDIR
|
||||
@@ -104,7 +104,7 @@ ENV ANDROID_VERSION=$ANDROID_VERSION \
|
||||
GOOGLE_PLAY_STORE=$GOOGLE_PLAY_STORE \
|
||||
GA=true \
|
||||
GA_ENDPOINT=https://www.google-analytics.com/collect \
|
||||
GA_TRACKING_ID=UA-128205228-1 \
|
||||
GA_TRACKING_ID=UA-133466903-1 \
|
||||
GA_API_VERSION="1" \
|
||||
APP_RELEASE_VERSION=$APP_RELEASE_VERSION \
|
||||
APP_TYPE=Emulator
|
||||
@@ -135,7 +135,7 @@ ENV DISPLAY=:0 \
|
||||
SCREEN=0 \
|
||||
SCREEN_WIDTH=1600 \
|
||||
SCREEN_HEIGHT=900 \
|
||||
SCREEN_DEPTH=16 \
|
||||
SCREEN_DEPTH=24+32 \
|
||||
LOCAL_PORT=5900 \
|
||||
TARGET_PORT=6080 \
|
||||
TIMEOUT=1 \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM appium/appium:1.10.0-p0
|
||||
FROM appium/appium:1.11.1-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
#=============
|
||||
# Set WORKDIR
|
||||
@@ -93,7 +93,7 @@ ENV DISPLAY=:0 \
|
||||
LOG_PATH=/var/log/supervisor \
|
||||
GA=true \
|
||||
GA_ENDPOINT=https://www.google-analytics.com/collect \
|
||||
GA_TRACKING_ID=UA-128205228-1 \
|
||||
GA_TRACKING_ID=UA-133466903-1 \
|
||||
GA_API_VERSION="1" \
|
||||
APP_RELEASE_VERSION=$APP_RELEASE_VERSION \
|
||||
APP_TYPE=Genymotion
|
||||
@@ -102,7 +102,7 @@ ENV DISPLAY=:0 \
|
||||
# Install genymotion
|
||||
#====================
|
||||
RUN echo | ssh-keygen -q
|
||||
ARG GENYMOTION_VERSION=2.12.1
|
||||
ARG GENYMOTION_VERSION=3.0.1
|
||||
ENV GENYMOTION=true \
|
||||
GENYMOTION_VERSION=$GENYMOTION_VERSION \
|
||||
PATH="${PATH}:/opt/genymobile/genymotion/" \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM appium/appium:1.10.0-p0
|
||||
FROM appium/appium:1.11.1-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
#=============
|
||||
# Set WORKDIR
|
||||
@@ -84,7 +84,7 @@ ENV DISPLAY=:0 \
|
||||
LOG_PATH=/var/log/supervisor \
|
||||
GA=true \
|
||||
GA_ENDPOINT=https://www.google-analytics.com/collect \
|
||||
GA_TRACKING_ID=UA-128205228-1 \
|
||||
GA_TRACKING_ID=UA-133466903-1 \
|
||||
GA_API_VERSION="1" \
|
||||
APP_RELEASE_VERSION=$APP_RELEASE_VERSION \
|
||||
APP_TYPE=Device
|
||||
|
||||
@@ -12,7 +12,7 @@ services:
|
||||
|
||||
# Please stop this container by using docker stop instead of docker-compose stop
|
||||
saas:
|
||||
image: butomo1989/docker-android-genymotion
|
||||
image: budtmo/docker-android-genymotion
|
||||
depends_on:
|
||||
- selenium_hub
|
||||
privileged: true
|
||||
@@ -29,7 +29,7 @@ services:
|
||||
|
||||
# Please stop this container by using docker stop instead of docker-compose stop
|
||||
aws:
|
||||
image: butomo1989/docker-android-genymotion
|
||||
image: budtmo/docker-android-genymotion
|
||||
depends_on:
|
||||
- selenium_hub
|
||||
privileged: true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Bash version should >= 4 to be able to run this script.
|
||||
|
||||
IMAGE="butomo1989/docker-android"
|
||||
IMAGE="budtmo/docker-android"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
read -p "Task (test|build|push|all) : " TASK
|
||||
|
||||
@@ -12,7 +12,7 @@ else
|
||||
RELEASE=$2
|
||||
fi
|
||||
|
||||
IMAGE="butomo1989/docker-android"
|
||||
IMAGE="budtmo/docker-android"
|
||||
FILE_NAME=docker/Genymotion
|
||||
|
||||
image_version="$IMAGE-genymotion:$RELEASE"
|
||||
|
||||
@@ -12,7 +12,7 @@ else
|
||||
RELEASE=$2
|
||||
fi
|
||||
|
||||
IMAGE="butomo1989/docker-android"
|
||||
IMAGE="budtmo/docker-android"
|
||||
FILE_NAME=docker/Real_device
|
||||
|
||||
image_version="$IMAGE-real-device:$RELEASE"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
IMAGE_NAME="butomo1989/docker-android"
|
||||
IMAGE_NAME="budtmo/docker-android"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
read -p "Type : " TYPE
|
||||
|
||||
@@ -124,7 +124,8 @@ def appium_run(avd_name: str):
|
||||
grid_connect = convert_str_to_bool(str(os.getenv('CONNECT_TO_GRID', False)))
|
||||
logger.info('Connect to selenium grid? {connect}'.format(connect=grid_connect))
|
||||
if grid_connect:
|
||||
local_ip = os.popen('ifconfig eth0 | grep \'inet addr:\' | cut -d: -f2 | awk \'{ print $1}\'').read().strip()
|
||||
# Ubuntu 16.04 -> local_ip = os.popen('ifconfig eth0 | grep \'inet addr:\' | cut -d: -f2 | awk \'{ print $1}\'').read().strip()
|
||||
local_ip = os.popen('ifconfig eth0 | grep \'inet\' | cut -d: -f2 | awk \'{ print $2}\'').read().strip()
|
||||
try:
|
||||
mobile_web_test = convert_str_to_bool(str(os.getenv('MOBILE_WEB_TEST', False)))
|
||||
appium_host = os.getenv('APPIUM_HOST', local_ip)
|
||||
@@ -164,7 +165,7 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
|
||||
],
|
||||
'configuration': {
|
||||
'cleanUpCycle': 2000,
|
||||
'timeout': 30000,
|
||||
'timeout': 30,
|
||||
'proxy': 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy',
|
||||
'url': 'http://{host}:{port}/wd/hub'.format(host=appium_host, port=appium_port),
|
||||
'host': appium_host,
|
||||
|
||||
@@ -312,7 +312,19 @@ function ga(){
|
||||
fi
|
||||
}
|
||||
|
||||
function saltstack(){
|
||||
if [ ! -z "${SALT_MASTER}" ]; then
|
||||
echo "ENV SALT_MASTER it not empty, salt-minion will be prepared"
|
||||
echo "master: ${SALT_MASTER}" >> /etc/salt/minion
|
||||
salt-minion &
|
||||
echo "salt-minion is running..."
|
||||
else
|
||||
echo "SaltStack is disabled"
|
||||
fi
|
||||
}
|
||||
|
||||
ga
|
||||
saltstack
|
||||
if [ "$REAL_DEVICE" = true ]; then
|
||||
echo "Using real device"
|
||||
run_appium
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
ip=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
|
||||
#Ubuntu 16.04 -> ip=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
|
||||
ip=$(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{ print $2}')
|
||||
socat tcp-listen:5554,bind=$ip,fork tcp:127.0.0.1:5554 &
|
||||
socat tcp-listen:5555,bind=$ip,fork tcp:127.0.0.1:5555
|
||||
|
||||