交付到 App Store 时,Fastlane 框架不支持的屏幕尺寸
Posted
技术标签:
【中文标题】交付到 App Store 时,Fastlane 框架不支持的屏幕尺寸【英文标题】:Fastlane frameit unsupported screen size when deliver to App store 【发布时间】:2019-04-09 11:51:52 【问题描述】:使用 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
创建的尺寸更大)
或在应用发布步骤(因为 Apple 可能会更改某些内容以接受屏幕尺寸)。
我想知道我用 GitLab CI 运行所有东西的事实是否会产生影响(但它不应该)。 deliver
步骤的屏幕截图大小导致 Fastlane 失败的原因可能是什么?
对于一个 iPhone8-Plus 的例子 - 我意识到:
--> Fastlane snapshot
步骤后的屏幕截图大小为 [1242 × 2208] 像素
--> Fastlane frameit
步骤后的框架屏幕截图大小为 [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"
]
【问题讨论】:
我刚刚发现了这个:Starting March 27, 2019, all app submissions for iPhone or iPad, including universal apps, will require screenshots for iPhone XS Max or the 12.9-inch iPad Pro (3rd generation).
我猜,除了我目前使用的 8 Plus 之外,我还必须使用 XS Max....
嗯,不!将iPhone Xs Max
添加到Snapfile
devices 并没有帮助,因为frameit
会生成大小为[1413 × 2844] 的Xs-Max 屏幕截图,但App Store 只允许[1242 × 2688]。因此还是同样的问题。任何人都可以为此提供解决方案吗?
frameit
如果您仅添加设备框架(它在屏幕截图周围添加一个框架以保持其大小),则应该生成不同大小的图像,但创建一个如果您也将带框的屏幕截图放在背景上,则原始大小的图像,例如填充和文本。根据您的描述,目前尚不清楚发生了什么。
(1) snapshot
、capture_ios_screenshots
和 capture_screenshots
是相同代码的别名。 (2) 如果它以前有效,您可以比较框架屏幕截图的大小 - 那里有什么变化吗? (3) 是的,更改配置当然会改变一些事情 - 回到您的旧配置,看看它是否适用于当前版本。
谢谢 janpio。哦不 - 愚蠢的我!我发现了错误:我的.gitignore
文件包含fastlane/screenshots
,这阻止了我所有的Framefile.json
更改生效!而且由于我正在使用 GitLab CI,我所有的 git push
都没有提供我的任何 fastlane 配置更改(但仍然触发了一个新管道 - 不幸的是,所有这些都是旧配置)。你对问题的整理帮助了我,让我看得更深入,我感谢你!
【参考方案1】:
对于那些遇到frameit
吐出“不支持的屏幕尺寸”错误的人,这里有一个解决问题的脚本方法。
转到this file 以检查所有设备接受的屏幕尺寸。
使用magick
将原始屏幕截图重新设置为所需设备所需的尺寸。调整屏幕截图大小以适应 iPhone 12 Pro Max 的示例命令如下所示
magick $file -resize "1284x2778"\! $file
-
调整大小后,运行
frameit
。
【讨论】:
以上是关于交付到 App Store 时,Fastlane 框架不支持的屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 API 密钥,Fastlane 上传到 App Store 也会在非交互模式下失败
App Store Connect API/fastlane:审核开始后如何“开发者拒绝”提交
VSTS Task Apple App Store 要求提供 2FA 代码,但设置了 Fastlane Session 和 App-Specific