Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[firebase_core] Firebase.initializeApp with demoProjectId crashes on iOS with SIGABRT (FIRInstallations validateAPIKey) - Follow-up to locked #17788

Đã đóng
#18,790 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@SelaseKay đang làm issue này rồi.

Từ ngày 13/10/2026.

  • #18792 của @SelaseKay — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
22/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
dart, ios
Lĩnh vực
mobile

Hướng nghiên cứu

Start in firebase_core/lib/src/firebase.dart, where demoProjectId builds the FirebaseOptions with the hardcoded apiKey '12345'. Reproduce with the linked repro project on an iOS simulator to see the SIGABRT from FIRInstallations validateAPIKey. Pull request #18792 already targets this, so check it before starting. Done means the demo options pass validation on Apple platforms and the repro app launches without crashing.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Needs Attention platform: ios plugin: core reproduced type: bug type: crash
Description

This is a follow-up to locked issue #17788. I have created a clean, minimal reproduction project with no remote Firebase project, no GoogleService-Info.plist, and no google-services.json:
👉 Reproduction Repository: https://github.com/akurnaz/flutterfire_repro

The issue is that Firebase.initializeApp(demoProjectId: '...') crashes natively on iOS (EXC_CRASH (SIGABRT) / Abort trap: 6) as soon as any package that depends on FirebaseInstallations (e.g., firebase_crashlytics, firebase_auth, or firebase_messaging) is present.

Steps to Reproduce
  1. Clone the reproduction repo: git clone https://github.com/akurnaz/flutterfire_repro.git
  2. Run on an iOS Simulator: flutter run
  3. The application crashes immediately on startup.

Alternatively, in any fresh Flutter app:

  • Add firebase_core: ^4.15.0 and firebase_crashlytics: ^5.4.0 (which pulls in FirebaseInstallations).
  • Call await Firebase.initializeApp(demoProjectId: 'demo-template'); in main().
Crash Stack Trace
Termination: SIGNAL (Abort trap: 6 / SIGABRT)
CoreFoundation - __exceptionPreprocess
libobjc.A.dylib - objc_exception_throw
Runner - +[FIRInstallations validateAPIKey:]
Runner - +[FIRInstallations validateAppOptions:appName:]
Runner - -[FIRInstallations initWithAppOptions:appName:installationsIDController:prefetchAuthToken:]
Runner - -[FIRInstallations initWithApp:]
Runner - __40+[FIRInstallations componentsToRegister]_block_invoke
Runner - -[FIRComponentContainer instantiateInstanceForProtocol:withBlock:]
Runner - -[FIRComponentContainer instanceForProtocol:]
Runner - -[FIRComponentContainer instantiateEagerComponents]
Runner - +[FIRApp configureWithName:options:]
Runner - FLTFirebaseCorePlugin.initializeApp(appName:initializeAppRequest:completion:)
Root Cause
  1. In firebase_core/lib/src/firebase.dart, demoProjectId sets a hardcoded dummy API key:
resolvedOptions = FirebaseOptions(
  apiKey: '12345',
  appId: '1:1:$platformString:1',
  messagingSenderId: '',
  projectId: demoProjectId,
);
  1. In the iOS native SDK (firebase-ios-sdk), FIRInstallations.m strictly validates that the API key is 39 characters and begins with A:
+ (void)validateAPIKey:(nullable NSString *)APIKey {
  if (APIKey.length != kExpectedAPIKeyLength) { // kExpectedAPIKeyLength = 39
    [validationIssues addObject:@"API Key length must be 39 characters"];
  }

  if (![[APIKey substringToIndex:1] isEqualToString:@"A"]) {
    [validationIssues addObject:@"API Key must start with `A`"];
  }
  
  if (validationIssues.count > 0) {
    [NSException raise:kFirebaseInstallationsErrorDomain format:...];
  }
}
  1. Because '12345' fails this validation, an uncaught NSException is thrown, resulting in an uncatchable SIGABRT crash on iOS.
Suggested Fix

In firebase_core/lib/src/firebase.dart, format the dummy apiKey to be a 39-character string starting with A on Apple platforms:

apiKey: (defaultTargetPlatform == TargetPlatform.iOS || defaultTargetPlatform == TargetPlatform.macOS)
    ? 'AIzaSy0000000000000000000000000000000'
    : '12345',
Ngôn ngữ chính
Dart
Star
9.3k
Fork
4.1k
Merge trung bình
2 ngày 8 giờ
Pull request đã merge (30 ngày)
46

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của firebase/flutterfire

Tất cả issue của firebase/flutterfire

Issue tương tự

Thêm issue về Dart

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.