昨天,我下载了Xcode 11的Beta版。之后,我打开了项目并尝试使用新的Xcode运行。不幸的是,消息出现了错误:
Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application's CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--
Run Code Online (Sandbox Code Playgroud)
我已经关闭了Beta版,并尝试使用Xcode的最新稳定版本(10.2.1)再次运行,但是发生了相同的错误。我需要提及的是,在尝试使用Xocde 11运行项目之前,它在Xcode 10上运行时没有任何问题。在使用beta Xcode运行之前和之后,都没有任何改变。
我已经尝试过的:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
Run Code Online (Sandbox Code Playgroud)
我可以运行没有经过Xcode 11测试的其他项目,而不会出现任何问题。
我的最后一个想法是仅重新安装macOS,但我不想这样做。
编辑:我忘了提到该应用程序在物理iPhone XS上运行。
在Xcode 11之前,我使用了一个脚本来读取当前应用程序版本(适用于AppStore)并帮助我更改LaunchScreen,因为我们不能为此使用swift。
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"
versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
sed -i .bak -e "/userLabel=\"APP_VERSION_LABEL\"/s/text=\"[^\"]*\"/text=\"v$versionNumber\"/" "$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"
Run Code Online (Sandbox Code Playgroud)
但是在Xcode 11中,项目的构建设置中有一个新的部分称为Versioning
并CFBundleShortVersionString
自动更改为$(MARKETING_VERSION)
。Xcode会自动处理该问题,我不想手动将其更改为静态数字,而是让Xcode进行处理。
因此,问题是如何MARKETING_VERSION
使用运行脚本访问此新文件并将其设置为launchScreen标签?
由于 Xcode 11 已将 Version 更改为 $(MARKETING_VERSION) & Build 为 $(CURRENT_PROJECT_VERSION)
构建设置中有新字段
由于
xcrun agvtool new-version
xcrun agvtool new-marketing-version
不能像在 Xcode 10 上那样完美地工作
我试过这个/sf/answers/4071527561/但没有用
我只能从中获得正确的价值
echo $versionNumber
echo $buildNumber
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能为它设置新的值呢?