FirebaseApp có tên [DEFAULT] không tồn tại


81

Sau khi chuyển sang Nhắn tin qua đám mây của Firebase, khi mở ứng dụng của tôi, ứng dụng của tôi bị treo và xuất hiện lỗi thông báo rằng java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.tôi đã đặt google-services.json mới và cập nhật SDK của mình.

Đây là hoạt động chính của tôi

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//Check Google play service
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int resultCode = googleAPI.isGooglePlayServicesAvailable(this);

    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.e(LOG_TAG, "This device is not supported.");
            finish();
        }
    }

    Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());

}
}

Câu trả lời:


108

Vui lòng kiểm tra kỹ, bạn đã thêm

apply plugin: 'com.google.gms.google-services' 

ở cuối tệp gradle của ứng dụng, sau đó dọn dẹp và xây dựng lại dự án


Tôi đã xóa bảng xếp hạng apply plugin: 'com.google.gms.google-services' ứng dụng của mình nhưng gặp lỗi mới khi gọi điện FirebaseInstanceId.getInstance().getToken()trong MainActivityứng dụng của tôi bị lỗi.
natsumiyu

1
xấu của tôi ... tôi cần phải thêm apply plugin: 'com.google.gms.google-services' ? cố gắng thêm nó, tôi vẫn gặp lỗi. nó nóiDidn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
natsumiyu

Xin chào Mori, hiện tại bạn có thể bỏ qua lỗi này và họ sẽ khắc phục sự cố này trong bản phát hành tiếp theo. đó là những gì nhóm firebase nói :).
Venkatesan

Khi tôi thêm cái này, tôi nhận được: "Lỗi: Không thực thi được tác vụ ': app: mergeModernDebugResources'.> [String / google_api_key] /<path>/app/src/main/res/values/defaults.xml [string / google_api_key] / <path> /app/build/generated/res/google-services/modern/debug/values/values.xml: Lỗi: Tài nguyên trùng lặp "Tôi cũng không thấy bước này trong hướng dẫn thiết lập hoặc di chuyển cho FCM. Bạn có một liên kết mà tôi có thể đã bỏ lỡ?
C Nick

1
Flutter cũng có thể yêu cầu flutter clean & flutter runnhư được đề xuất trong câu trả lời.
Nae

21

Không chắc chắn, nếu nó có liên quan ở đây. Nhưng có một kịch bản khác khi sự cố này có thể xảy ra.


Nếu ứng dụng của bạn có một dịch vụ (với quy trình khác) và bạn đang tạo Applicationlớp của riêng mình , thì dịch vụ và ứng dụng nền trước sẽ sử dụng cùng một lớp Ứng dụng ( không phải cùng một phiên bản ) để khởi tạo. Bây giờ khi tôi đang sử dụng phụ thuộc com.google.firebase:firebase-crashđể xử lý các sự cố, nó tạo ra một dịch vụ nền your.app.packagename:background_crash. Vì một số lý do, điều này đã gây ra sự cố trên ứng dụng của tôi. Cụ thể, vì trong lớp Ứng dụng, tôi đã thực hiện một cuộc gọi như

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Tôi giả sử rằng, dịch vụ nền khi kết nối với lớp Ứng dụng của chúng tôi, bằng cách nào đó Firebase không được khởi tạo. Để khắc phục điều này, tôi đã

if (!FirebaseApp.getApps(this).isEmpty())
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Điều này cũng xảy ra với quảng cáo. Nếu người dùng nhấp vào quảng cáo sau đó quay lại ứng dụng Firebase mà không còn khả dụng nữa.
theJosh

@Codevalley, Trong trường hợp của tôi, có một quy trình khác (Trình chỉnh sửa hình ảnh Adobe Creative SDK) được gọi là app: editor. Nó đang sử dụng cùng một lớp ứng dụng, do đó cố gắng lấy mã thông báo từ ứng dụng firebase không tồn tại. Kiểm tra trước khi nhận được mã thông báo đã giải quyết được vấn đề của tôi. Cảm ơn bạn rất nhiều! :)
rzaaeeff

12

Tôi đã gặp vấn đề tương tự và đối với tôi đó là một lỗi / vấn đề với việc hợp nhất tệp kê khai. Tôi đã phát hiện ra rằng nó FirebaseInitProviderchưa được đưa vào tệp kê khai cuối cùng do tools:node="replace"trong tệp kê khai của ứng dụng của tôi. Vì vậy, hãy cố gắng xóa thẻ xml này và thẻ FirebaseInitProvidersẽ được đưa vào và có thể khởi chạy Firebase đúng cách.


bạn có thể vui lòng cập nhật câu trả lời của bạn cho những người không phải là nhiều familier với công cụ sáp nhập @jmodrako
killer

Hiện tại tôi đã cập nhật lên công cụ: Replace = "android: name" thay vì công cụ: node = "Replace". hy vọng rằng sự giúp đỡ
killer

11

tệp build.gradle:

buildscript {
    repositories {
        jcenter()
        mavenLocal()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

Tệp \ app \ build.gradle:

apply plugin: 'com.android.application'

android {
    ..
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ..
    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-messaging:9.0.2'
}

apply plugin: 'com.google.gms.google-services'

Lỗi: (90, 0) Không tìm thấy plugin có id 'com.google.gms.google-services'.
Gilberto Ibarra

10

@jmodrako câu trả lời đã giải quyết được vấn đề của tôi ... tools:node="replace"thànhtools:node="merge"

Giải thích ... trên AndroidManifest.xml

Từ

<application
...
tools:node="replace">

Đến

<application
...
tools:node="merge">

Sự cố hợp nhất với các chủ đề thư viện? Xây dựng các vấn đề được giải quyết bằng cách sử dụngtools:replace="android:theme"

Tín dụng cho https://stackoverflow.com/a/38060272/2765087


2

Di chuyển quá trình khởi tạo firebase của bạn bên trong lớp onCreate of Application. Ngoài ra, nếu bạn đã bật tính năng duy trì ngoại tuyến, thì FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) sẽ xuất hiện trước bất kỳ lần khởi chạy nào khác.


đã vô tình nhấp vào bỏ phiếu ngay bây giờ nên không cho phép tôi ủng hộ :(
Developine

2

Xác minh tất cả các cấu hình như bên dưới:

Cài đặt dự án 1-firebase: google-services.json có đúng không? nhập mô tả hình ảnh ở đây

2- thêm SDK firebase nhập mô tả hình ảnh ở đây

3- dọn dẹp - xây dựng lại dự án của bạn

hy vọng, điều này sẽ giúp!


2

Thêm dòng sau vào app / build.gradle

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

Và dòng sau để dự án build.gradle

classpath 'com.google.gms:google-services:4.3.3'

0

Android Studio

  1. áp dụng plugin: 'com.google.gms.google-services' (build.gradle - Lớp mô-đun)
  2. Menu ~> Build ~> CleanProject

Làm việc cho tôi ok.


0

Đăng ký ứng dụng của bạn trong Firebase và sao chép google-services.json vào dự án gốc của bạn.

Áp dụng classpath 'com.google.gms:google-services:3.1.0cho bạn root build.gradle.

Áp dụng apply plugin: 'com.google.gms.google-servicescho lớp dự án của bạn.


0

Trong phần phụ thuộc của bạn, chỉ cần thêm:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}

ứng dụng plugin: 'com.google.gms.google-services'


0

Thay đổi Hành động xây dựng (GoogleServicesJson) thành Tên tệp Google-Services.Json.


0

Trong trường hợp của tôi, tôi không khởi chạy Firebase khi khởi động ứng dụng, tôi phải làm như sau để giải quyết

@Service
public class FirebaseSetup implements CommandLineRunner {
    public void run(String... args) throws Exception {
        initializeFirebase();
    }
    private void initializeFirebase() throws FileNotFoundException, IOException {
        FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
        FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
        FirebaseApp.initializeApp(options);
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.