cocos2dx VS 真机调试

2015年01月26日 10:40 0 点赞 2 评论 更新于 2025-11-21 15:28

本文将总结在使用 Cocos2d-x 结合 VS 进行真机调试时遇到的一些常见问题,以方便大家更快地查找和解决问题。

问题 1:真机调试时程序闪退

作为生成 IPA 的示例,我们使用 Cocos2d-x 自带的范例“SimpleGame”。此范例程序本身并无错误,但在真机调试时,程序虽能成功安装到真机上,却总是出现闪退的情况。

点击左上角的“Show the Log Navigator”,发现有两条警告信息,这表明 Run Script 未成功执行。具体的提示信息如下:

/Users/yons/Library/Developer/Xcode/DerivedData/SimpleGame-bwydcazyhntqhqbajqhzzjplgfnz/Build/Intermediates/cocos2dx.build/Release-iphoneos/cocos2dx.build/Script-E4EA5F9E188841D60013FBD2.sh: line 3: [: iphoneos: unary operator expected
/Users/yons/Library/Developer/Xcode/DerivedData/SimpleGame-bwydcazyhntqhqbajqhzzjplgfnz/Build/Intermediates/cocos2dx.build/Release-iphoneos/cocos2dx.build/Script-E4EA5F9E188841D60013FBD2.sh: line 3: [: missing `]'

解决方法

需要检查 Run Script 中的脚本是否存在错误。经检查发现,脚本中存在空格使用不当的问题。正确的脚本如下:

export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi

问题 2:如何生成 IPA 文件

当程序能正常运行且可在真机上调试时,我们可能需要生成独立的 IPA 安装包。可以通过脚本程序将 IPA 安装包打包并放置在桌面,具体脚本如下:

if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then
mkdir -p "${BUILT_PRODUCTS_DIR}/Payload"
cd "${BUILT_PRODUCTS_DIR}/Payload" ; ln -s "../${WRAPPER_NAME}" .
cd "${BUILT_PRODUCTS_DIR}" ; zip -r ~/Desktop/${PROJECT_NAME}.ipa Payload > /dev/null
rm -fr "${BUILT_PRODUCTS_DIR}/Payload"
fi

问题 3:移植 Cocos2d-x 示例时的注意事项

在移植 Cocos2d-x 的示例时,项目中会有两个 Target,一个用于生成程序,另一个是 cocos2dx.xcodeproj。需要特别注意的是,Run Script 的脚本只需放在生成程序的 Target 中,而不能放在 cocos2dx.xcodeproj 里。

当所有步骤都正确完成后,就能成功生成 IPA 文件。