You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App提审后Crashlytics报CountryNumbers.json找不到,求原因解析

问题原因分析

你遇到的问题核心在于Xcode对不同位置资源文件的打包处理逻辑差异,具体原因可以从以下几点解释:

  • 目录结构的路径匹配问题
    如果你创建的Assets/是普通文件夹:

    • 若添加文件夹时选择了Create folder references,Xcode会在最终的App Bundle中保留完整子目录结构,此时文件实际路径为Bundle.main/Assets/CountryNumbers.json。但你的代码中直接使用url(forResource: "CountryNumbers.json", withExtension: nil)查找,未指定subdirectory: "Assets"参数,自然无法定位到文件。
    • 本地调试正常可能是因为本地项目中该文件同时存在于根目录,或是添加文件夹时用了Create groups模式(文件会被直接放到bundle根目录),但Archive打包时目录结构严格生效,导致路径不匹配问题暴露。
  • 本地调试与Archive打包的处理差异
    Xcode在本地调试(包括Release真机)和Archive打包阶段的资源处理逻辑存在细微区别:

    • 本地调试时Xcode可能不会严格执行资源目录结构校验,文件有概率被意外定位到;但用于提交App Store的Archive打包会严格按照项目配置打包资源,此时目录结构的问题就会触发崩溃。
  • 系统默认Assets目录的特殊处理(若误用)
    如果你误将文件放到了系统默认的Assets.xcassets目录中,这个目录是专门用于管理图片等资源的,Xcode会将其中内容编译成.car格式的资源包,而非以独立JSON文件的形式存在于Bundle中,因此无法通过Bundle.main.url()找到目标文件。

总结

将文件移到Bundle根目录后,文件直接处于Bundle顶层目录,url(forResource:)可以直接定位到,因此问题解决。本质是资源文件的存放位置导致Bundle中的实际路径与代码中查找的路径不匹配,而本地调试与Archive打包的差异放大了这个问题。

内容的提问来源于stack exchange,提问作者ALex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 06:22:19