更新仅限 watchOS 的应用 "generated iOS" plist?

Update watchOS-only app "generated iOS" plist?

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


watchOS-only 应用程序默认有 3 个目标:WatchKit 应用程序、WatchKit 扩展和看起来像主包的东西,类似于 "fake" iOS 应用程序,可能需要分发。

在构建步骤中,您可以清楚地看到主要 "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。

遇到同样的问题,您应该可以将密钥添加到主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