Swift 4 Xcode 9下Cloud Storage启动崩溃:未找到默认存储桶
解决Firebase集成后启动SIGABRT崩溃(提示“No Default Storage bucket found”)问题
看起来你遇到的是Firebase配置和组件初始化相关的典型问题,结合你的代码和描述,我整理了几个关键修复步骤,应该能解决你的问题:
1. 先修复Podfile中的语法错误
你的Podfile里有一个中文单引号的错误:
pod ‘Firebase/Database’
这个中文引号会导致CocoaPods无法正确解析依赖,可能造成Firebase Database组件没有被正确安装。把它改成英文单引号:
pod 'Firebase/Database'
然后在终端执行:
pod install --repo-update
确保所有Firebase组件都正确安装到项目中。
2. 检查并更新GoogleService-Info.plist
崩溃提示“No Default Storage bucket found”最常见的原因是配置文件缺失Storage Bucket信息:
- 登录Firebase控制台,进入你的项目,点击右上角的齿轮图标进入「Project Settings」
- 在「General」标签页的「Your apps」部分,下载最新的
GoogleService-Info.plist - 删除项目中旧的plist文件(先移除引用,再删除本地文件),将新plist拖入Xcode,确保勾选了你的
Txtarget,并且在Build Phases > Copy Bundle Resources中能看到这个文件 - 打开plist文件,确认存在
STORAGE_BUCKET字段,值格式应为your-project-id.appspot.com
3. 确认Firebase服务已启用
如果控制台还没初始化相关服务,即使配置文件正确也会报错:
- 进入Firebase控制台的「Storage」页面,点击「Get Started」完成存储桶的初始化配置
- 进入「Realtime Database」页面,点击「Create Database」完成数据库初始化
4. 调整组件初始化时机(可选但稳妥)
你的ViewController中直接将storage声明为类属性并初始化:
let storage = Storage.storage()
虽然理论上FirebaseApp.configure()会在ViewController初始化前执行,但如果项目启动流程有特殊处理,可能导致Storage实例在Firebase配置完成前被创建。建议改为延迟初始化:
class ViewController: UIViewController { @IBOutlet weak var ptImage: UIImageView! var db : Firestore! var storage: Storage! // 仅声明,不初始化 var dbRef : DatabaseReference! override func viewDidLoad() { super.viewDidLoad() // 在Firebase配置完成后初始化组件 storage = Storage.storage() db = Firestore.firestore() dbRef = Database.database().reference() fetchPtPic() } func fetchPtPic() { let TxPtID = "JJ" let storageRef = storage.reference() let ptImagesRef = storageRef.child("PtImages/\(TxPtID).jpg") // 后续处理逻辑... } }
5. 清理项目并重新构建
最后执行以下步骤确保缓存被清除:
- 按
Command + Shift + K清理项目 - 重启Xcode
- 删除模拟器或真机上的App,然后重新运行
按照这些步骤操作后,应该就能解决启动崩溃的问题了。
内容的提问来源于stack exchange,提问作者Craig C
相关产品推荐
相关产品推荐

