Compare commits

...
21 Commits
Author SHA1 Message Date
butomo1989 3479738457 Updated readme 2019-06-13 22:47:51 +07:00
butomo1989 98a3b3d8d5 Using beta version 2019-06-13 17:24:37 +07:00
butomo1989 abf1d33e62 Deleted unused file 2019-06-07 14:33:33 +07:00
butomo1989 9e826e4f61 Replaced gmtool with gmsaas 2019-06-07 14:28:48 +07:00
butomo1989 5c2045a840 Replaced gmtool with gmsaas on installation process 2019-06-06 00:59:35 +07:00
butomo1989 aa7e88cf46 Use gpu swiftshader_indirect and VM acceleration by default 2019-05-29 21:56:19 +07:00
butomo1989 4ac0bebe99 Added Polyverse for security 2019-05-06 18:33:13 +07:00
butomo1989 ac9b6e9af7 Updated the base image 2019-05-06 18:26:16 +07:00
Budi UtomoandGitHub 65afbdeeba Merge pull request #156 from polyverse/master
Added Polymorphic
2019-05-04 09:05:43 +02:00
butomo1989 ed29b14c9e Updated the docker base image 2019-04-04 20:02:26 +07:00
Budi UtomoandGitHub 54cb0fc824 Replaced the old link 2019-03-18 10:31:20 +01:00
Budi UtomoandGitHub 15375cc53b Added README.md 2019-03-11 20:13:51 +01:00
budtmo 4516899786 Added credits in readme 2019-03-11 17:10:02 +01:00
budtmo 45e7df6db3 Added Samsung S7 and S7 Edge 2019-03-11 16:53:37 +01:00
Budi UtomoandGitHub b9a7a486e1 Renamed 2019-03-06 19:33:27 +01:00
Budi UtomoandGitHub 90642436dd Renamed 2019-03-06 17:19:02 +01:00
budtmo ef3c4e28c0 Added readme file for Jenkins 2019-03-06 15:57:45 +01:00
budtmo 4d4c22124f Added SaltStack 2019-03-01 12:46:50 +01:00
budtmo 7d63eac5ae Updated Genymotion to version 3.0.1 2019-03-01 11:14:38 +01:00
Chris Hanaoka b1be8ceeab added polymorphic linux install 2019-02-26 18:34:23 -08:00
budtmo fcb89f2702 Updated maintainer email 2019-02-21 18:01:38 +01:00
81 changed files with 1327 additions and 53 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
**Please make sure that it is an issue / a feature request. If it is a question / help wanted, please visit [our group chat](https://gitter.im/butomo1989/docker-android). Thank you!**
**Please make sure that it is an issue / a feature request. If it is a question / help wanted, please visit [our group chat](https://gitter.im/budtmo/docker-android). Thank you!**
Operating System:
<!-- OSX Yosemite, Ubuntu 16.04, Windows 10 etc -->
+16 -1
View File
@@ -3,7 +3,7 @@
</p>
[![Analytics](https://ga-beacon.appspot.com/UA-133466903-1/github/budtmo/docker-android/README.md)](https://github.com/igrigorik/ga-beacon "Analytics")
[![Join the chat at https://gitter.im/butomo1989/docker-android](https://badges.gitter.im/butomo1989/docker-android.svg)](https://gitter.im/butomo1989/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Join the chat at https://gitter.im/budtmo/docker-android](https://badges.gitter.im/budtmo/docker-android.svg)](https://gitter.im/budtmo/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/budtmo/docker-android.svg?branch=master)](https://travis-ci.org/budtmo/docker-android)
[![codecov](https://codecov.io/gh/budtmo/docker-android/branch/master/graph/badge.svg)](https://codecov.io/gh/budtmo/docker-android)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3f000ffb97db45a59161814e1434c429)](https://www.codacy.com/app/butomo1989/docker-appium?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=butomo1989/docker-appium&amp;utm_campaign=Badge_Grade)
@@ -59,6 +59,8 @@ 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
@@ -205,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
------
@@ -232,6 +239,14 @@ All logs inside container are stored under folder **/var/log/supervisor**. you c
docker exec -it android-container tail -f /var/log/supervisor/docker-android.stdout.log
```
Emulator Skins
--------------
The Emulator skins are taken from [Android Studio IDE](https://developer.android.com/studio) and [Samsung Developer Website](https://developer.samsung.com/home.do)
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/)
Special Thanks
--------------
- [Gian Christanto] for creating a great logo!
+5
View File
@@ -31,6 +31,11 @@ If you want to add more arguments for running emulator, you can ***pass an envir
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
--------------
+3 -2
View File
@@ -11,11 +11,12 @@ You can easily scale your Appium tests on Genymotion Android virtual devices in
```bash
export USER="xxx"
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 budtmo/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 budtmo/docker-android-genymotion
```
In case you are interesed to play around with Genymotion on SaaS, you can register to [this link](http://bit.ly/2YP0P1l) to get 1000 free minutes for free.
2. On PaaS (AWS) <br />
Use [aws.json](genymotion/example/sample_devices/aws.json) to define configuration of EC2 instance and run following command:
+6
View File
@@ -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)
+101
View File
@@ -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>
+101
View File
@@ -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>
+4
View File
@@ -0,0 +1,4 @@
Sources
--------
The Emulator skins are taken from [Android Studio IDE](https://developer.android.com/studio) and [Samsung Developer Website](https://developer.samsung.com/home.do)
@@ -0,0 +1,4 @@
[port-button2.png]
rotate=rotate(2)
[port-button3.png]
rotate=rotate(3)
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

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
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+449
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,4 @@
[port-button2.png]
rotate=rotate(2)
[port-button3.png]
rotate=rotate(3)
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 KiB

Binary file not shown.

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
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+449
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

-3
View File
@@ -1,3 +0,0 @@
Sources:
1. Android Studio IDE
2. http://developer.samsung.com/technical-doc/view.do?v=T000000095
+14 -2
View File
@@ -1,6 +1,6 @@
FROM appium/appium:1.11.1-p0
FROM appium/appium:1.13.0-p0
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
#=============
# Set WORKDIR
@@ -63,6 +63,18 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
bridge-utils \
&& rm -rf /var/lib/apt/lists/*
#===========
# Polyverse
# https://polyverse.io/how-it-works/
#===========
ARG TOKEN=xxx
RUN curl -s https://sh.polyverse.io | sh -s install ${TOKEN}; \
if [ $? -eq 0 ]; then \
apt -y update && \
apt-get -y install --reinstall $(dpkg --get-selections | awk '{print $1}'); \
fi
#=======
# noVNC
# Use same commit id that docker-selenium uses
+32 -13
View File
@@ -1,6 +1,6 @@
FROM appium/appium:1.11.1-p0
FROM appium/appium:1.13.0-p0
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
#=============
# Set WORKDIR
@@ -21,8 +21,12 @@ WORKDIR /root
#------------------
# Genymotion spec
#------------------
# bzip2
# File compression
# python3-setuptools
# PPython packaging facilitator
# python3-wheel
# Python distribution
# python3-pip
# Python package installer
#------------------
# NoVNC Packages
#------------------
@@ -49,7 +53,9 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
supervisor \
socat \
keychain \
bzip2 \
python3-setuptools \
python3-wheel \
python3-pip \
x11vnc \
openbox \
menu \
@@ -59,6 +65,18 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
jq \
&& rm -rf /var/lib/apt/lists/*
#===========
# Polyverse
# https://polyverse.io/how-it-works/
#===========
ARG TOKEN=xxx
RUN curl -s https://sh.polyverse.io | sh -s install ${TOKEN}; \
if [ $? -eq 0 ]; then \
apt -y update && \
apt-get -y install --reinstall $(dpkg --get-selections | awk '{print $1}'); \
fi
#=======
# noVNC
# Use same commit id that docker-selenium uses
@@ -98,19 +116,20 @@ ENV DISPLAY=:0 \
APP_RELEASE_VERSION=$APP_RELEASE_VERSION \
APP_TYPE=Genymotion
#============
# Set Locale
#============
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
#====================
# Install genymotion
#====================
RUN echo | ssh-keygen -q
ARG GENYMOTION_VERSION=2.12.1
ENV GENYMOTION=true \
GENYMOTION_VERSION=$GENYMOTION_VERSION \
PATH="${PATH}:/opt/genymobile/genymotion/" \
INSTANCES_PATH=/root/tmp/instances.txt \
APPIUM_LOG=$LOG_PATH/appium.log
RUN wget -nv -O genymotion.bin "https://dl.genymotion.com/releases/genymotion-${GENYMOTION_VERSION}/genymotion-${GENYMOTION_VERSION}-linux_x64.bin" \
&& chmod +x ./genymotion.bin \
&& yes | ./genymotion.bin \
&& rm genymotion.bin
RUN pip3 install gmsaas
COPY genymotion/generate_config.sh genymotion/geny_start.sh genymotion/enable_adb.sh /root/
#===================
@@ -141,5 +160,5 @@ EXPOSE 4723 6080 5555
COPY src /root/src
COPY supervisord.conf /root/
RUN chmod -R +x /root/src && chmod +x /root/supervisord.conf /root/geny_start.sh
RUN gmtool --cloud config use_custom_sdk=on sdk_path=/root
RUN gmsaas config set android-sdk-path /root
CMD ["./geny_start.sh"]
+14 -2
View File
@@ -1,6 +1,6 @@
FROM appium/appium:1.11.1-p0
FROM appium/appium:1.13.0-p0
LABEL maintainer "Budi Utomo <budi.ut.1989@gmail.com>"
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
#=============
# Set WORKDIR
@@ -50,6 +50,18 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
jq \
&& rm -rf /var/lib/apt/lists/*
#===========
# Polyverse
# https://polyverse.io/how-it-works/
#===========
ARG TOKEN=xxx
RUN curl -s https://sh.polyverse.io | sh -s install ${TOKEN}; \
if [ $? -eq 0 ]; then \
apt -y update && \
apt-get -y install --reinstall $(dpkg --get-selections | awk '{print $1}'); \
fi
#=======
# noVNC
# Use same commit id that docker-selenium uses
+2 -3
View File
@@ -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
@@ -24,12 +24,11 @@ services:
- TEMPLATE=/root/tmp/devices.json
- USER=$USER
- PASS=$PASS
- LICENSE=$LICENSE
- CONNECT_TO_GRID=true
# 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,11 +1,11 @@
[
{
"template": "Samsung Galaxy S7 - 6.0.0 - API 23 - 1440x2560",
"template": "a2a0c86c-7572-45fe-98d0-66f8efed9fa0",
"device": "SamsungS7V6",
"port": 38727
},
{
"template": "Google Nexus 6 - 8.0 - API 26 - 1440x2560",
"template": "80a67ae9-430c-4824-a386-befbb19518b9",
"device": "Nexus6V8"
}
]
+1 -1
View File
@@ -1,3 +1,3 @@
#!/bin/bash
(export USER=$USER && export PASS=$PASS && export LICENSE=$LICENSE && docker-compose -f geny.yml up -d)
(export USER=$USER && export PASS=$PASS && docker-compose -f geny.yml up -d)
+19 -9
View File
@@ -38,16 +38,26 @@ export TYPES=${types[@]}
getAbort() {
case $TYPE in
"${types[0]}" )
contents=$(cat $TEMPLATE)
echo "ABORT SIGNAL detected! Stopping all created emulators..."
for row in $(echo "${contents}" | jq -r '.[] | @base64'); do
get_value() {
echo ${row} | base64 --decode | jq -r ${1}
}
echo "ABORT SIGNAL detected! Stopping all created instances / emulators..."
gmtool --cloud admin stopdisposable $(get_value '.device')
done
echo "Done"
# Get the list of created instances from the instance.txt
if [ ! -f "$INSTANCES_PATH" ]; then
echo "File not found! Nothing to do!"
exit 1
else
content=$(cat ${INSTANCES_PATH})
read -a instances <<< $content
echo "All created instances: ${instances[@]}"
# Stop the instance one by one
for i in "${instances[@]}"
do
echo "stop instance with id \"${i}\""
gmsaas instances stop "${i}"
echo "stopped"
done
echo "Done"
fi
;;
"${types[1]}" )
contents=$(cat $TEMPLATE)
+1 -1
View File
@@ -161,7 +161,7 @@ function build() {
image_latest="$IMAGE-$processor-$v:latest"
echo "[BUILD] Image name: $image_version and $image_latest"
echo "[BUILD] Dockerfile: $FILE_NAME"
docker build -t $image_version --build-arg ANDROID_VERSION=$v --build-arg API_LEVEL=$level \
docker build -t $image_version --build-arg TOKEN=$TOKEN --build-arg ANDROID_VERSION=$v --build-arg API_LEVEL=$level \
--build-arg PROCESSOR=$processor --build-arg SYS_IMG=$sys_img --build-arg IMG_TYPE=$IMG_TYPE \
--build-arg BROWSER=$BROWSER --build-arg CHROME_DRIVER=$chrome_driver \
--build-arg APP_RELEASE_VERSION=$RELEASE -f $FILE_NAME .
+1 -1
View File
@@ -21,7 +21,7 @@ image_latest="$IMAGE-genymotion:latest"
function build() {
echo "[BUILD] Image name: $image_version and $image_latest"
echo "[BUILD] Dockerfile: $FILE_NAME"
docker build -t $image_version --build-arg APP_RELEASE_VERSION=$RELEASE -f $FILE_NAME .
docker build -t $image_version --build-arg TOKEN=$TOKEN --build-arg APP_RELEASE_VERSION=$RELEASE -f $FILE_NAME .
docker tag $image_version $image_latest
}
+1 -1
View File
@@ -21,7 +21,7 @@ image_latest="$IMAGE-real-device:latest"
function build() {
echo "[BUILD] Image name: $image_version and $image_latest"
echo "[BUILD] Dockerfile: $FILE_NAME"
docker build -t $image_version --build-arg APP_RELEASE_VERSION=$RELEASE -f $FILE_NAME .
docker build -t $image_version --build-arg TOKEN=$TOKEN --build-arg APP_RELEASE_VERSION=$RELEASE -f $FILE_NAME .
docker tag $image_version $image_latest
}
+2 -2
View File
@@ -204,9 +204,9 @@ def run():
cfg.write('\ndisk.dataPartition.size={dp}'.format(dp=dp_size))
if is_first_run:
cmd = 'emulator/emulator @{name} -gpu off -verbose -wipe-data {custom_args}'.format(name=avd_name, custom_args=custom_args)
cmd = 'emulator/emulator @{name} -gpu swiftshader_indirect -accel on -wipe-data -verbose {custom_args}'.format(name=avd_name, custom_args=custom_args)
else:
cmd = 'emulator/emulator @{name} -gpu off -verbose {custom_args}'.format(name=avd_name, custom_args=custom_args)
cmd = 'emulator/emulator @{name} -gpu swiftshader_indirect -accel on -verbose {custom_args}'.format(name=avd_name, custom_args=custom_args)
appium = convert_str_to_bool(str(os.getenv('APPIUM', False)))
if appium:
subprocess.Popen(cmd.split())
+29 -9
View File
@@ -7,12 +7,12 @@ echo "Selected type of deployment: $TYPE, Template file: $TEMPLATE"
function prepare_geny_cloud() {
contents=$(cat $TEMPLATE)
# Register
echo "Register user"
gmtool config username="${USER}" password="${PASS}"
gmtool license register "${LICENSE}"
# LogIn
echo "Log In"
gmsaas auth login "${USER}" "${PASS}"
# Start device(s)
created_instances=()
echo "Creating device(s) based on given json file..."
for row in $(echo "${contents}" | jq -r '.[] | @base64'); do
get_value() {
@@ -22,16 +22,24 @@ function prepare_geny_cloud() {
template=$(get_value '.template')
device=$(get_value '.device')
port=$(get_value '.port')
echo "Starting \"$device\" with template name \"$template\"..."
instance_uuid=$(gmsaas instances start "${template}" "${device}")
echo "Instance-ID: \"$instance_uuid\""
created_instances+=("${instance_uuid}")
if [[ $port != null ]]; then
echo "Starting \"$device\" with template name \"$template\" on port \"$port\"..."
gmtool --cloud admin startdisposable "${template}" "${device}" --adb-serial-port "${port}"
echo "Connect device on port \"$port\"..."
gmsaas instances adbconnect "${instance_uuid}" --adb-serial-port "${port}"
else
echo "Starting \"$device\" with template name \"$template\"..."
gmtool --cloud admin startdisposable "${template}" "${device}"
echo "Connect device on port..."
gmsaas instances adbconnect "${instance_uuid}"
fi
done
# Store created instances in a file
echo "All created instances: ${created_instances[@]}"
echo "${created_instances[@]}" > "${INSTANCES_PATH}"
}
function prepare_geny_aws() {
@@ -312,7 +320,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