更新仅 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 - 如何从扩展委托更新 SwiftUI 视图