更新仅 watchOS 的应用程序“生成的 iOS”plist?

Posted

技术标签:

【中文标题】更新仅 watchOS 的应用程序“生成的 iOS”plist?【英文标题】:Update watchOS-only app "generated iOS" plist? 【发布时间】:2020-02-21 17:38:32 【问题描述】:

TL;DR 如何更新生成的仅限 watchOS 的 iOS plist 文件?


仅 watchOS 的应用默认有 3 个目标:WatchKit 应用、WatchKit 扩展以及看起来是主捆绑包的东西,类似于“假”ios 应用,可能需要分发。 p>

在构建步骤中,您可以清楚地看到主“TeslaPulse”目标是一个 iOS 目标,并且是 WatchKit 应用和 WatchKit 扩展的父包(有点像非 watchOS 应用)。

这个主要的 iOS 目标有一个步骤:

ProcessInfoPlistFile /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Products/Debug-iphoneos/TeslaPulse.app/Info.plist /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Intermediates.noindex/TeslaPulse.build/Debug-iphoneos/TeslaPulse.build/empty.plist (in target 'TeslaPulse' from project 'TeslaPulse')
    cd /Users/vince/Documents/TeslaPulse
    builtin-infoPlistUtility /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Intermediates.noindex/TeslaPulse.build/Debug-iphoneos/TeslaPulse.build/empty.plist -producttype com.apple.product-type.application.watchapp2-container -genpkginfo /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Products/Debug-iphoneos/TeslaPulse.app/PkgInfo -expandbuildsettings -format binary -platform iphoneos -additionalcontentfile /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Intermediates.noindex/TeslaPulse.build/Debug-iphoneos/TeslaPulse.build/Base.lproj/LaunchScreen-SBPartialInfo.plist -additionalcontentfile /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Intermediates.noindex/TeslaPulse.build/Debug-iphoneos/TeslaPulse.build/assetcatalog_generated_info.plist -additionalcontentfile /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Intermediates.noindex/TeslaPulse.build/Debug-iphoneos/TeslaPulse.build/ProductTypeInfoPlistAdditions.plist -requiredArchitecture arm64 -o /Users/vince/Library/Developer/Xcode/DerivedData/TeslaPulse-dotmlbmrjsjjgggixtbkfceylkfa/Build/Products/Debug-iphoneos/TeslaPulse.app/Info.plist

这是为那个主要目标生成 Info.plist。

问题:如何更改该 plist 以获得额外的密钥?

这是必需的,因为 https://forums.developer.apple.com/message/405719#405719 为了让您的应用可用于 TestFlight 的内部用户,您需要以某种方式显式添加 ITSAppUsesNonExemptEncryption 键。

虽然对于像我这样只支持 watchOS 的应用程序,我发现解决此问题的唯一技巧是在生成存档后手动更改生成的 plist。

【问题讨论】:

【参考方案1】:

遇到同样的问题,您应该可以将密钥添加到主 WatchApp 中。但 iTunesConnect 正在检查手表应用,就好像它们捆绑在 iPhone 应用中一样: ERROR: ERROR ITMS-90363: "Invalid Info.plist key. The key 'ITSAppUsesNonExemptEncryption' in bundle Boiler.app/Watch/WatchKit App.app is invalid."

我找到了一个不错的解决方案,只需为虚拟目标创建一个 info.plist!这将被合并而不是 empty.plist!不要忘记INFOPLIST_FILE 虚拟目标的构建设置。 (来源:https://forums.developer.apple.com/thread/122660)

【讨论】:

非常感谢。看起来 iTunes connect 已经被修补过了,它不再抱怨那个丢失的密钥了。尽管如此,您的解决方法还是很棒的(;

以上是关于更新仅 watchOS 的应用程序“生成的 iOS”plist?的主要内容,如果未能解决你的问题,请参考以下文章

WatchOS 4 未收到后台 GPS 更新

打开 WatchOS2 时获取更新的应用程序上下文

WatchOS - 来自 iOS 的复杂功能更新

watchOS - 如何从扩展委托更新 SwiftUI 视图

更新到 watchOS 6 后,滚动视图停止工作,有啥变化吗?

WatchOS 6 通知未到达