首页 > 解决方案 > 交付到 App Store 时,Fastlane 框架不支持的屏幕尺寸

问题描述

使用 Swift5、iOS-12.2、Xcode-10.2(10E125) 并使用 GitLab CI 运行所有内容,

在 App 发布步骤(使用 Fastlane 的)期间,屏幕截图的大小似乎存在问题deliver。屏幕截图创建得很好(使用 Fastlanesnapshotframeit工具)。

但是现在更新到最新的 iOS、Swift 和 Xcode 版本突然打破了我的 Fastlane 工作示例。我现在收到以下错误:

Unsupported screen size [1446, 2948] for path '/Users/user/Documents/Programieren/iPhone_applications/Learning/Watch/MyApp/builds/aMDc3etB/0/myusername/MyAppName/fastlane/screenshots/de-DE/iPhone 8 Plus-01Screenshot_de_framed.png'

Fastlane会不会有什么问题:

我想知道我用 GitLab CI 运行所有东西的事实是否有影响(但它不应该)。关于步骤中屏幕截图的屏幕尺寸,Fastlane 失败的原因可能是什么deliver

对于 iPhone8-Plus 示例 - 我意识到:

--> Fastlanesnapshot步骤后的屏幕截图大小为 [1242 × 2208] 像素

--> Fastlaneframeit步骤后的框架屏幕截图大小为 [1446 × 2948] 像素

Apple 应用商店要求 [1242 × 2208] 像素大小的图像 - 因此永远不会接受“带框”的图像!

会不会有什么问题frameit???

我应该在我的 Snapfile 中选择不同的 iOS 设备(见下文)吗?如果是的话,哪些???(也就是说,过去 App Store 需要 iPhone8 Plus 大小的屏幕截图 [5.5"]。这可能会改变吗??)

这是我的快速文件:

lane :screenshots do
    snapshot
    frameit(silver: true, path: './fastlane/screenshots')
end

这是我的快照文件:

workspace "MyApp.xcworkspace"
scheme "MyAppUITests"
devices([
    "iPhone 8 Plus",
    "iPhone SE"
])
languages([
    "en-US",
    "de-DE"
])
localize_simulator true
clear_previous_screenshots true
erase_simulator true
reinstall_app true

这是我的 Framefile.json 文件:

{
    "device_frame_version": "latest",
    "default": {
        "keyword": {
            "fonts": [
                {
                    "font": "./fonts/SF-UI-Display-Semibold.otf",
                    "supported": ["de-DE", "en-US"]
                },
                {
                    "font": "./fonts/Chinese.ttf",
                    "supported": ["zcmn-Hans"]
                }
            ]
        },
        "title": {
            "fonts": [
                {
                    "font": "./fonts/SF-UI-Display-Regular.otf",
                    "supported": ["de-DE", "en-US"]
                },
                {
                    "font": "./fonts/Chinese.ttf",
                    "supported": ["zcmn-Hans"]
                }
            ],
            "color": "#203943"
        },
        "background": "./background.jpg",
        "padding": 50,
        "stack_title" : false,
        "title_below_image": false,
        "show_complete_frame": false,
    },


    "data": [
        {
            "filter": "01",
            "keyword": {
                "color": "#4B849B"
            }
        },
        {
            "filter": "02",
            "keyword": {
                "color": "#4B849B"
            }
        },
        {
            "filter": "03",
            "keyword": {
                "color": "#4B849B"
            }
        },
        {
            "filter": "04",
            "keyword": {
                "color": "#4B849B"
            }
        },
        {
            "filter": "05",
            "keyword": {
                "color": "#4B849B"
            }
        },
        {
            "filter": "06",
            "keyword": {
                "color": "#4B849B"
            }
        }
    ]
}

标签: screenshotfastlanefastlane-snapshotfastlane-deliverframeit

解决方案


对于那些frameit遇到“不支持的屏幕尺寸”错误的人,这里有一种解决问题的脚本方法。

  1. 转到此文件以检查所有设备接受的屏幕尺寸。

  2. 用于magick将原始屏幕截图重新设置为所需设备所需的尺寸。调整屏幕截图大小以适应 iPhone 12 Pro Max 的示例命令如下所示

magick $file -resize "1284x2778"\! $file
  1. 调整大小后,运行frameit.

推荐阅读