To create a custom skin, you need the following elements
- A background image (background.png)
- A JSON file (skin.json)
- All these elements must be placed in a new folder in:
- Linux, macOS: ~/.Genymobile/Genymotion/skins
- Windows: %LOCALAPPDATA%\Genymobile\Genymotion\skins
- For example:
- ~/.Genymobile/Genymotion/skins/my-phone-skin/
- %LOCALAPPDATA%\Genymobile\Genymotion\skins\my-phone-skin\
- Background image
- The background image must be in PNG format.
- It must be named background.png.
- Example: background.png
- JSON File
- Then you need to create a JSON file named skin.json, which contains the following information.
Name
- "name" is a string.
- This attribute allows you to give a name for your skin.
After creation, you should find your skin in the Virtual device installation window if you want to create a new device with this skin.
Display
- "display" defines the position and size of the skin relative to the device.
"display": {
"offset": {
"x": int,
"y": int
},
"size": {
"width": int,
"height": int
}
}
- The display attribute sets the size and offset of your skin.
- offset sets the offset between your skin and the device display.
- size sets the width and height of the virtual device resolution.
- Important
- The height and width of the background image must not be lower than height + offset x and width + offset y, or you will get a BACKGROUND_FORMAT_ERROR.
Resize Margins
- "resizeMargins": { "left": int, "top": int, "right": int, "bottom": int }
"resizeMargins": {
"left": int,
"top": int,
"right": int,
"bottom": int
}
- The resizeMargins attribute defines the resizable margins of the window.
- The window will only be resizable from bottom and left sides, but you still need to define the other sides in case the virtual device is rotated.
Example
Content of the skins folder:
~/.Genymobile/Genymotion/skins/skin-test/
├── background.png
└── skin.json
Content of skin.json:
{
"name": "skin-test",
"display": {
"offset": {
"x": 150,
"y": 150
},
"size": {
"width": 720,
"height": 1280
}
},
"resizeMargins": {
"left": 75,
"top": 75,
"right": 75,
"bottom": 75
}
}
Here is a diagram explaining precisely each parameters from skin.json: