我们使用 iOS 7 中新的 SpriteKit 框架来开发小游戏。为了构建和分发我们游戏的新版本,我们使用了一个使用 Xcode5 命令行工具的构建和部署服务器。
当我们在 Xcode 中使用纹理图集并打开使用来自纹理图集的图像的 SpriteKit 视图时,应用程序(通过命令行构建)崩溃。
当我们构建应用程序 Xcode 的 GUI 并使用 Xcode 的 GUI 将其部署到设备时,一切正常并且应用程序不会崩溃。
这似乎是 Xcode5 命令行工具中的一个错误。
任何解决方法的想法?
我们使用 iOS 7 中新的 SpriteKit 框架来开发小游戏。为了构建和分发我们游戏的新版本,我们使用了一个使用 Xcode5 命令行工具的构建和部署服务器。
当我们在 Xcode 中使用纹理图集并打开使用来自纹理图集的图像的 SpriteKit 视图时,应用程序(通过命令行构建)崩溃。
当我们构建应用程序 Xcode 的 GUI 并使用 Xcode 的 GUI 将其部署到设备时,一切正常并且应用程序不会崩溃。
这似乎是 Xcode5 命令行工具中的一个错误。
任何解决方法的想法?
使用 Xcode 5 最终版:
似乎 xCode 命令行工具只是忽略了构建设置中的“启用纹理图集生成”设置。
所有在命令行上完成的构建、调试和发布构建,不包含任何已编译的纹理图集文件夹。(只有源 .atlas 的)。如果我使用 Xcode GUI 进行相同的构建,源图集 (.atlas) 文件夹将消失,并且在 IPA 内有正确的“.atlasc”文件夹和已编译的纹理图集。缺少的地图集是斯蒂芬提到的崩溃的原因。
我在 Apples Bug Reporter 中填写了一个错误:15250666
作为一个快速的脏修复,可以使用这样的 shell 脚本构建阶段手动运行图集生成:
cd "$CONFIGURATION_BUILD_DIR"/*.app
/Applications/Xcode.app/Contents/Developer/usr/bin/TextureAtlas YOURATLAS.atlas
我在尝试通过 AppCode 在我的测试设备上运行 SpriteKit 应用程序时遇到了类似的问题,我假设它在下面使用 xcode-build。
您可以在此处查看详细信息。
为此,我必须按照 Lukas Alperowitz 的建议手动编译它们。我建议不要编译每个脚本,而是添加一个通用规则。
为此,请添加一个为所有 *.atlas 文件运行的自定义脚本。
自定义脚本:
${DEVELOPER_TOOLS_DIR}/../usr/bin/TextureAtlas ${INPUT_FILE_PATH} ${DERIVED_FILE_DIR}
输出文件:
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.atlasc
更新:
有一个单独的TextureAtlas(注意大写)工具,似乎您必须手动调用它以进行命令行构建。该工具位于:
/Applications/Xcode.app/Contents/Developer/usr/bin
从 Xcode 5.0.1 开始,工具使用会打印出以下内容:
Usage: TextureAtlas [-c][-p][-v][-f format] input_textures_folder optional_output_folder
-c: use copy textures instead of generating texture atlas.
-p: force texture atlas to have power of two dimensions.
-v: enable verbose output.
-f format: set texture output format.
format = 1 (default): output RGBA8888 format.
format = 2: output RGBA8888 compressed format.
format = 3: output RGBA4444 format.
format = 4: output RGBA5551 format.
format = 5: output RGB565 format.
其他要检查的事项:
xcodebuild -version验证命令行工具版本