Fastlane 框架交付到 App store 时不支持屏幕尺寸

问题描述 投票:0回答:2

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

在应用程序发布步骤中,屏幕截图屏幕尺寸似乎存在问题(使用Fastlane的

deliver
)。屏幕截图制作得很好(使用 Fastlane 的
snapshot
frameit
工具)。

但是更新到最新的 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 是否有问题:

  • frameit
    步骤(因为框架图像的尺寸比
    snapshot
    创建的图像更大)
  • 或者在应用程序发布步骤(因为苹果可能改变了一些接受的屏幕尺寸)。

我想知道我使用 GitLab CI 运行所有内容是否会产生影响(但应该不会)。

deliver
步骤中屏幕截图的屏幕尺寸导致 Fastlane 失败的原因是什么?

以 iPhone8-Plus 为例 - 我意识到:

--> Fastlane

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

--> Fastlane

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

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

会不会有什么问题

frameit
???

我应该在 Snapfile 中选择不同的 iOS 设备(见下文)吗?如果是的话,是哪些??? (也就是说,过去应用商店需要 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"
            }
        }
    ]
}
screenshot fastlane fastlane-snapshot fastlane-deliver frameit
2个回答
3
投票

对于那些遇到

frameit
吐槽“不支持的屏幕尺寸”错误的人,这里有一个可编写脚本的方法来解决该问题。

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

  2. 使用

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

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

0
投票

检查Frameit的源代码会发现它只在

is_complex_framing_mode
时调整最终图像的大小。

要使

is_complex_framing_mode
成立,需要背景和标题(或关键字)。

此外,

show_complete_frame
的默认值为 false。我也把它设置为true。

我发现这种方式会生成正确尺寸的框架图像以提交到 App Store Connect。

这是Framefile.json

{
    "default": {
        "title": {
            "color": "#0000ff01",
            "text": "."
            },
        "show_complete_frame":true,
        "background": "./background.jpg",
        "padding": 1
        },
    "data": []
}
© www.soinside.com 2019 - 2024. All rights reserved.