Nav*_*tti 2 xcode ios swift swift4 xcode11
在将我的项目从swift 3.2迁移到Xcode 10中的swift 4之后,我尝试在Xcode 11中进行归档,并给我这个错误:
PhaseScriptExecution Run \脚本/Users/desarrollo/Library/Developer/Xcode/DerivedData/MyApp-iOS-ewcyzseaubkujucenluznpmduhoo/Build/Intermediates.noindex/ArchiveIntermediates/MyApp-iOS-DEV/IntermediateBuildFilesPath/MyApp-iOS.build/Release-i -iOS-DEV.build/Script-E95AEDE51E54767F00B60429.sh(位于项目'MyApp-iOS'的目标'MyApp-iOS-DEV'中)
。。。
/Users/desarrollo/Library/Developer/Xcode/DerivedData/MyApp-iOS-ewcyzseaubkujucenluznpmduhoo/Build/Intermediates.noindex/ArchiveIntermediates/MyApp-iOS-DEV/IntermediateBuildFilesPath/MyApp-iOS.build/Release-iphoneos/MyApp-iOS-DEV .build / Script-E95AEDE51E54767F00B60429.sh:第5行:$(CURRENT_PROJECT_VERSION)+ 1:语法错误:预期的操作数(错误令牌为“ $(CURRENT_PROJECT_VERSION)+ 1”)
在错误堆栈中,我发现导出CURRENT_PROJECT_VERSION = 114
我没有任何带有“ $(CURRENT_PROJECT_VERSION)+1”的脚本,所以我不知道该怎么办
以上所有答案都不是自己做的,我必须计算其中的一堆,包括 Apple 文档(请参阅下面的参考资料)。所以这里是我做的步骤,如果它可以帮助某人完成所有步骤。
在 Info.plist 中,设置:
在目标构建设置中:
在方案>存档中:
cd ${PROJECT_DIR} ; xcrun agvtool next-version -all ; 更新:
在最新版本的Xcode(版本11.1)中,您可以相当轻松地执行内部版本号自动递增。
步骤如下:
Build SettingsVersioning SystemApple GenericBuild Phasesagvtool next-version -all对所有目标执行此操作,并且每次运行任何目标时,它们的内部版本号都将同步并更新。
从这里得到了这个答案:https : //stackoverflow.com/a/58237340/1432355
原版的:
我想你没做错任何事。
如果您转到,info.plist则将看到内部版本号已被替换$(CURRENT_PROJECT_VERSION)(您可以在“内部设置”选项卡中找到该变量)。
我猜您正在使用一个脚本,该脚本会自动增加内部版本号,这会导致问题(我的项目现在有同样的问题)。
如果您删除该脚本,则您的应用应该可以正常编译而不会出现此错误。
我还没有找到有关如何使脚本与此新$(CURRENT_PROJECT_VERSION)变量一起使用的解决方案。(找到解决方案后,我将更新此答案)
这是对我有用的脚本,Xcode 11+
只需将新的添加Run Script Phase到阶段Build Phases
下方的“添加它”即可Link Binary with Libraries。
#!/bin/sh
# To make executable, use: chmod u+x Build-Versioning-Scripts/Increment_Build_Number.sh
# to locate your target's info.plist use
# ${PRODUCT_SETTINGS_PATH}
echo "----"
echo "Info.plist for target: ${PRODUCT_SETTINGS_PATH}"
buildNum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "${PRODUCT_SETTINGS_PATH}")
echo "Current build #: $buildNum"
if [ -z "$buildNum" ]; then
echo "No build number found in $PRODUCT_SETTINGS_PATH"
exit 2
fi
buildNum=$(expr $buildNum + 1)
echo "Build # incremented to: $buildNum"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNum" "$PRODUCT_SETTINGS_PATH"
echo "----"
exit 0
Run Code Online (Sandbox Code Playgroud)
该脚本最初由Alex Zavatone发布于此处。
希望这可以帮助
Just change CFBundleVersion from $(CURRENT_PROJECT_VERSION) to number, in my case is 1000 in Info.plist
<key>CFBundleVersion</key>
<string>1004</string>
Run Code Online (Sandbox Code Playgroud)
Then the shell will be OKey:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |