记Unity2019.3以后iOS命令行出包
2 年前
- Unity版本 2019.3+
- 运行环境 Mac Xcode 12.3 BuildVersion 12C33
错误日志
Error Domain=IDEProvisioningErrorDomain Code=10 "UnityFramework.framework does not support provisioning profiles." UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription=UnityFramework.framework does not support provisioning profiles., NSLocalizedRecoverySuggestion=UnityFramework.framework does not support provisioning profiles, but provisioning profile has been manually specified. Remove this item from the "provisioningProfiles" dictionary in your Export Options property list
近期尝试在Mac使用shell脚本自动出ipa,但是运行Unity导出的Xcode工程会抛出上面的错误。
原因:Unity2019.3版本以后由于Unity的版本更新,采用新的策略,将Unity导出的iOS工程分为Unity-iPhone和UnityFramework,如图所示。但是XcodeBuilde archive 命令在声明bundleId和描述文件的时候自动对scheme下所有的target进行签名,包含了UnityFrameworkd这个Framewrok,所以导致的打包失败。
解决方案:
这个方案提供了一个思路,通过C#脚本控制签名证书,而不是通过命令行
这个方案提供了一个思路,sed命令来修改项目配置
这些方案都太复杂,我的解决方案
参考
在命令后加上_APP就可以解决问题,别人估计改改就能用
#!$MY_BASH
set -xe
now=$(date +"%Y%m%d-%H:%M")
project_name=build
outputFolder=$WORKSPACE/trunk/house/Bin/ios/ios_ipa
project_path=$WORKSPACE/trunk/house/Bin/ios/ios_xcode
workspace_path=$project_path/Unity-iPhone.xcodeproj
scheme_name=Unity-iPhone
configuration=${BUILD_TYPE}
archive_path=$outputFolder/[$BUILD_NUMBER]${project_name}$now.xcarchive
plist_path=$outputFolder/[$BUILD_NUMBER]${project_name}.plist
ipa_path=$outputFolder/[$BUILD_NUMBER]${project_name}${now}
echo 'archive project:'${configuration}
xcodebuild CODE_SIGN_STYLE="Manual" DEVELOPMENT_TEAM=$TEAM_ID PROVISIONING_PROFILE_APP=${PROVISIONING_PROFILE_CUSTOM} PRODUCT_BUNDLE_IDENTIFIER_APP=${BUNDLE_ID} \
-project ${workspace_path} \
-configuration ${configuration} \
-scheme $scheme_name clean archive -archivePath ${archive_path} -quiet || exit
echo 'archive success export project'
plistcontent='
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<key>method</key>
<string>'$BUILD_TYPE'</string>
<key>teamID</key>
<string>'$TEAM_ID'</string>
<key>provisioningProfiles</key>
<key>'${BUNDLE_ID}'</key>
<string>'${PROVISIONING_PROFILE_CUSTOM}'</string>
</dict>
</dict>
</plist>