复制steam_appid.txt至可执行文件旁致代码签名失效的解决办法
解决Steam调试构建代码签名冲突问题
方法1:通过环境变量替代steam_appid.txt文件
调试时无需复制文件,直接在Xcode中设置运行环境变量:
- 打开Xcode的项目设置,进入
Edit Scheme->Run->Arguments标签页 - 在
Environment Variables区域添加变量:STEAM_APPID,值设为你的游戏Steam AppID - 应用设置后,启动调试时SteamAPI_Init()会自动读取该环境变量,无需依赖steam_appid.txt
方法2:将steam_appid.txt纳入Xcode资源管理(仅Debug模式)
把文件添加到项目中,让Xcode自动处理复制和签名,避免手动脚本冲突:
- 将steam_appid.txt拖入Xcode项目,勾选
Copy items if needed,并确保目标勾选你的游戏target - 进入target的
Build Phases->Copy Bundle Resources,确认steam_appid.txt在列表中 - 添加条件编译设置:在
Build Settings中搜索Excluded Source File Names,在Debug配置下留空,Release配置下添加steam_appid.txt,确保正式构建不包含该文件
方法3:调整脚本执行时机到代码签名之后(需重新签名)
如果必须用脚本复制,修改脚本在签名后执行并重新签名:
- 在
Build Phases中移除原有的复制脚本,添加一个Run Script到Post-Compile Scripts的最末尾(确保在Code Sign之后) - 脚本内容示例:
注意:替换# 复制steam_appid.txt到可执行文件目录 cp "${SRCROOT}/steam_appid.txt" "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app/Contents/MacOS/" # 重新签名应用 codesign --force --sign "${CODE_SIGN_IDENTITY}" "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app"${SRCROOT}/steam_appid.txt为你的文件实际路径,确保CODE_SIGN_IDENTITY在Xcode Build Settings中正确配置
方法4:复制文件到应用包外部目录
将steam_appid.txt复制到应用包外的Steam默认搜索路径,避免修改签名后的包内容:
- 脚本中复制文件到
~/Library/Application Support/Steam/steamapps/common/[你的游戏目录]/ - 或者复制到构建产物的上级目录(如
${BUILT_PRODUCTS_DIR}/),同时在Xcode的运行路径设置中指定该目录为工作目录
内容的提问来源于stack exchange,提问作者Scam
相关产品推荐
相关产品推荐

