You need to enable JavaScript to run this app. 已添加NSPhotoLibraryUsageDescription仍崩溃?Swift3转Swift5问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

已添加NSPhotoLibraryUsageDescription仍崩溃?Swift3转Swift5问题咨询

老Swift升级项目相册权限崩溃问题排查

结合你描述的「读取相册功能正常、执行写入操作时崩溃、报错提示缺少NSPhotoLibraryUsageDescription但已在源文件配置」的特征,按以下优先级排查:

  • 首先核对是否补全了拆分后的相册写入权限配置
    iOS 14之后PhotoKit权限做了拆分:原有的NSPhotoLibraryUsageDescription仅覆盖相册读取的权限校验,你目前导入照片功能正常,就说明这个键的配置是生效的。但涉及保存内容到相册的写入操作,系统要求单独配置对应的权限描述项NSPhotoLibraryAddUsageDescription。
    这里有个非常容易误导人的系统提示bug:当检测到写入权限校验失败时,系统不会精准抛出缺失NSPhotoLibraryAddUsageDescription的提示,只会笼统报「缺少NSPhotoLibraryUsageDescription」的错误,很多开发者会被误导反复检查已经配置好的读取权限键,完全想不到是写入权限的描述没加。
  • 其次检查老项目迁移后的Info.plist实际构建路径
    从Swift 3升级到Swift 5的过程中,Xcode版本通常会同步大幅迭代,很容易出现项目内留存多份Info.plist的问题:
    • 进入项目Build Settings,搜索Info.plist File,确认当前配置指向的文件,就是你手动编辑加权限的那个文件,而不是迁移过程中遗留的旧版本Info.plist
    • 不要只检查项目目录下的源Info.plist文件,一定要打开DerivedData里实际构建生成的.app包,展开查看包内的Info.plist,搜索两个相册权限键的内容,确认配置真的被打包进了应用
  • 最后排查新版Xcode的默认配置覆盖问题
    Xcode 13及以上版本默认开启Generate Info.plist File(对应Build Setting里的GENERATE_INFOPLIST_FILE),老项目升级时这个配置会被Xcode自动同步开启,构建阶段Xcode会自动合并生成最终的Info.plist,过程中很可能冲掉你手动在源Info.plist里添加的权限内容,导致最终打包的应用包里没有对应的权限描述。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 21:45:02