2

我们使用 iOS 7 中新的 SpriteKit 框架来开发小游戏。为了构建和分发我们游戏的新版本,我们使用了一个使用 Xcode5 命令行工具的构建和部署服务器。

当我们在 Xcode 中使用纹理图集并打开使用来自纹理图集的图像的 SpriteKit 视图时,应用程序(通过命令行构建)崩溃。

当我们构建应用程序 Xcode 的 GUI 并使用 Xcode 的 GUI 将其部署到设备时,一切正常并且应用程序不会崩溃。

这似乎是 Xcode5 命令行工具中的一个错误。

任何解决方法的想法?

4

3 回答 3

3

使用 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
于 2013-10-17T16:43:37.313 回答
3

我在尝试通过 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
于 2013-12-29T12:25:23.970 回答
0

更新:

有一个单独的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.

其他要检查的事项:

  • 验证崩溃是由于纹理丢失/损坏造成的。如果在加载图集或使用图集纹理之一时它没有崩溃,那么您可能遇到了不同的问题。尝试运行带有调试器的自动构建。
  • 您的自动构建是创建调试还是发布配置构建?如果发布,请尝试使用 GUI 构建发布版本。您可能有一个简单的仅发布崩溃问题。
  • 仔细检查纹理图集文件夹是否包含与 GUI 构建中相同的文件
  • 从设备中删除应用程序,清理构建文件夹,使用 GUI 工具重新运行:它现在崩溃了吗?如果是,则您遇到的情况是纹理从项目中删除但仍在捆绑包中,因为 Xcode 不会从已部署的捆绑包中删除文件。
  • Xcode Preferences -> Locations:确保将命令行工具设置为正确的版本。
  • 运行xcodebuild -version验证命令行工具版本
  • 如果一切都失败了,试试TexturePacker
于 2013-10-17T09:56:49.097 回答