This project is a fastlane plugin. To get started with fastlane-plugin-framer
, add it to your project by running:
fastlane add_plugin framer
Create images combining app screenshots to templates to make nice pictures to upload in App Store or Google Play.
It gives you the freedom to customize the looks of each image (your designers will love that!) while keep their generation fully automated.
Template images can be anything. The only important thing is that it needs to be the same size as the screenshot it will contains.
You can specify the position and the size of the screen in the template and (optionally) the position and size of the text.
Check out the example Fastfile
to see how to use this plugin.
There are 4 lanes: 1º for a simple flow (demo-1
), 2º with more languages and screens (demo-2
), 3ª for android screenshots with rotation images and more them one frame(demo-3
) and last for ios screenshots (demo-4
).
Try them by cloning the repo, running fastlane install_plugins
and bundle exec fastlane
and select lane.
From great customizations come great configurations [files]
In order to work, you need to configure each template and the text to draw in the final images.
The framer action support 4 optional parameters (default values are used).
Option | Description | Default |
---|---|---|
source_folder |
path to the folder that contains raw screenshots and text.json file |
./fastlane/framer/screens |
template_folder |
path to the folder that contains the templates images and configuration | ./fastlane/framer/templates |
output_folder |
path to the folder that will contains the final images, framed. Used then by deliver |
./fastlane/screenshots (default one for deliver ) |
output_suffix |
filenam suffix for the framed images | -framed |
In the template folder you choose, there must be a config.json
file (see example). In there you will found
- a default configuration for all templates
- a custom configuration for each template (if needed).
default is, as you guess, the default configuration for all templates (a fallback configuration, if you will).
After that, for each template image you have, you have to put a new map with the same filename as your template image.
There are keys for configuring screeshot and for the text.
"iPhone6s": {
"image": {
"offset": "+148+172",
"width": 457
},
"text": {
"offset_y": 1123,
"height": 210,
"size": 48
}
}
Key | Type | Description |
---|---|---|
offset |
String | Pixel position in the format +[X value]+[Y value] |
width |
Number | space available, in pixel, for the screen |
add_below |
Boolean | add screen below the template or not |
rotation |
Number | degrees for rotate image |
previous |
Object | same parameters as image, used to display the previous image |
next |
Object | same parameters as image, used to display the previous image |
Key | Type | Description |
---|---|---|
offset_x |
Number | X position of the text block |
offset_y |
Number | Y position of the text block |
height |
Number | height of the text block |
size |
Number | font size |
font |
String | path of custom font file to use |
color |
String | color for the text in hex format (ex. #545454 ) |
padding |
Number | horizontal internal padding of the text block |
If you want some text in the final framed images, you need to create a text.json
file and put it with the raw device screenshots. It makes sense to commit this file in your repository.
text.json
is a simple map where key is the part of the screenshot filename (I suggest the same string you use with the snapshot()
command on your UI tests.
The value can be any strings.
You can customize the color of the text and the background color applyed below the template (if you have transparencies on the template, you can fill them with the background color).
colors.json
is a simple map where key is part of the screenshot filename. The value is a map with 2 optional keys, text and background.
{
"default": {
"background": "#00FFFF",
"text": "#FFFFFF"
},
"demo": {
"background": "#FF00FF",
}
}
Default values can be defined inside the default map.
To run both the tests, and code style validation, run
rake
To automatically fix many of the styling issues, use
rubocop -a
For any other issues and feedback about this plugin, please submit it to this repository.
If you have trouble using plugins, check out the Plugins Troubleshooting doc in the main fastlane
repo.
For more information about how the fastlane
plugin system works, check out the Plugins documentation.
fastlane
is the easiest way to automate building and releasing your iOS and Android apps. To learn more, check out fastlane.tools.