Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unsupported Device size for Android devices in combination with Fastlane #212

Open
patreu22 opened this issue Aug 13, 2020 · 5 comments
Open

Comments

@patreu22
Copy link

Hello there,

I have a workflow set up to generate my iOS screenshots for the AppStore. I use screenshots to take the shots from my Flutter app and then, as intended by the creator of this package, I switch over to Fastlane and use frameit to use the frames, put them on a background and at titles to the screenshots as it is the current status quo how people do it on AppStores. Since Fastlane added Android support for frameit I tried to do the same for the Android version of my apps. That doesn't work out, because the screenshots this tool generates (without frames) are too small and I get an unsupported device size error from Fastlane. Framing the snaps with screenshots brings them into the right size, but frameit doesn't support it to use screenshots that are already rendered into devices. Does anybody have a workaround or solution for that? Would save a ton of work for many people to find a workaround I guess!

@MiguelSOliveira
Copy link

MiguelSOliveira commented Oct 11, 2020

Did you end up finding a solution @patreu22?

I'm also having this problem. I know this is an old issue but I'll leave my solution here anyways, in case it helps someone else.

In my case the problem was the screenshot was taken without the navigation bar, so instead of having 2280 pixels in height, it had 2148 which is the height it should have minus the navigation bar's height.

The solution I've found so far is not ideal but it's working for me at the moment:

  • In my emulator I use adb to remove the navigation bar:
    Like so: https://pastebin.com/Wd3QSPuj
    The command is this:
    adb shell settings put global policy_control immersive.navigation=apps,-com.google.android.googlequicksearchbox

And with this I can use this package to create an unframed screenshot that is then framed and decorated by frameit.

Hope it helps.

@patreu22
Copy link
Author

Thanks a lot for taking the time to share your approach! Actually I didn't dive deeper into the issue because I got distracted, but I will use your approach to make it work again. Anyhow, this repo really needs more maintenance, working with Fastlane is a MUST, not a nice-to-have.

@patreu22
Copy link
Author

@MiguelSOliveira May I ask which devices you use? Cause I'm using the Nexus 6P and the size with [1440, 2392] is still unsupported. It works with the Nexus 9P though!

@MiguelSOliveira
Copy link

I'm currently using Pixel 4 emulator and a OP6 physical device @patreu22.

I remove the navbar on the Pixel 4 emulator so the screenshot ends up as 1080x2280, but with the OP6 physical device I don't need to do any tweaks, since it does not have a navbar.

@marcschw
Copy link

marcschw commented Dec 10, 2020

I'll add my workaround - maybe it helps some people.

First thing you need to know is that fastlane frameit currently only supports 3 devices for android - the Samsung S8, S9 and the Pixel XL 3. It checks exactly for the screenshot sizes of these three devices when you run the android specific command "fastlane frameit android" (see https://github.com/milhauscz/fastlane/blob/2a7e5c827342d0458774b3a1ef7b148c43c31705/frameit/spec/device_spec.rb for the code where you'll see there are currently just those three device sizes although the facebook repo used
https://github.com/fastlane/frameit-frames/tree/gh-pages/latest
would support a lot more recent Android devices - then again they kinda all look the same anyway...)

As described above unfortunately screenshots is taking screenshots which are too big for fastlane to recognize when it comes to those Android devices, that is why I created some custom virtual devices accounting for the additional screensize:
I created modified custom hardware profiles:
"Samsung Galaxy S9m" with screen size 1440 x 3152 (5.8")
"Pixel 3 XLm" with screensize 1440 x 3104 (6.3")

If you wanted to use the S8 all you'd have to do is measure the difference in pixels and add it to your custom device.

They will both be put in the phone folder but I'll try to use the Pixel Screenshots as 7" Tablet, let's see if it passes.

Another interesting alternative is Herbert Poul's "frameit_chrome" solution which gives you access to any frame you want since you download them locally and also allows any formatting via CSS:
https://github.com/authpass/frameit-chrome
https://codeux.design/articles/automatically-add-device-frames-and-text-to-app-screenshots/

I hope that helps! Surely cost me a few days figuring this out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants