【问题标题】:Custom binary runs at low DPI when packaged in .app on macOS在 macOS 上以 .app 打包时,自定义二进制文件以低 DPI 运行
【发布时间】:2019-05-10 07:25:11
【问题描述】:

我创建了一个 SDL2 应用程序,它支持高 DPI 并在手动运行编译后的二进制文件时正确显示。

我创建了一个.app 结构(Info.plistContents/... 等...),其中包含已编译的二进制文件。应用程序本身启动并运行良好,但问题是尽管将NSHighResolutionCapable 添加到我的Info.plist 中,但窗口的 DPI 较低,与在没有应用程序结构的情况下启动已编译二进制文件时的 DPI 形成对比。 Get Info 菜单将Open in Low Resolution 选项显示为打勾并显示为灰色,我没有碰过这个选项。

除非 macOS 应用程序包需要进一步的步骤,否则我可以确认二进制文件本身没有任何问题,因为它在手动运行时以高 DPI 运行。

以下是我的Info.plist 的 sn-p,我已编辑 为了可读性,一大堆不相关的键。

[...]
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHighResolutionCapable</key>
<true/>

为了在高 DPI 下运行,我需要进行哪些更改?

【问题讨论】:

  • 您是否只是尝试添加 NSHighResolutionCapable 键,在没有它的情况下运行您的包?您是否尝试过重置 Launch Services DB(请参阅这些答案:stackoverflow.com/questions/20426140/…)或使用新用户帐户?
  • @TheNextman 是的,就是这样!感谢您的提示。

标签: c macos cocoa installation sdl


【解决方案1】:

TheNextman 引导我朝着正确的方向前进,这是一个简单的问题,即在我添加高 DPI 密钥之前缓存了 Info.plist 的早期版本。

为了更新缓存,我输入了命令/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f [path to .app],正如here 解释的那样。

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2017-08-18
    • 2015-10-07
    • 2014-08-19
    相关资源
    最近更新 更多