Не удается получить поставщик com.гуглить.опорному пункту.поставщик.FirebaseInitProvider


Я тестирую новый инструмент аварии : https://firebase.google.com/docs/crash/

после прохождения шагов, приложение запускается и он падает говоря:

05-18 17:28:18.870 28743 28743 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle.
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.-wrap1(ActivityThread.java)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:148)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:5417)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
05-18 17:28:18.870 28743 28743 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle.
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    ... 10 more
13 122

13 ответов:

1.

добавить ид_приложения к сборке приложения.Gradle в:

android {
    ...
    defaultConfig {
        applicationId "com.example.my.app"
        ...
    }
}

и Чистый Проект - > Построить или Перестроить Проект


2. если ваш minSdkVersion https://developer.android.com/studio/build/multidex)

правильно Используйте Multidex.

приложения строить.gradle

android {
...               
    defaultConfig {
    ....
        multiDexEnabled true
    }
    ...
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
    ...
}

манифест.xml

<application
    ...
    android:name="android.support.multidex.MultiDexApplication" >
    ...

3.

если вы используете пользовательский класс приложения

public class MyApplication extends MultiDexApplication {
    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
}

манифест.xml

<application
    ...
    android:name="com.example.my.app.MyApplication" >
    ...

Я был с той же проблемой в устройствах с SDK MultiDex.install должно быть attachBaseContext метод.

если вы используете MultiDex, попробуйте это:

public class YourApplication extends Application {

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this); //initialize other plugins 

    }
}

приложения/строить.Gradle в:

android {

    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {
        applicationId "com.test.app"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

....
}

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])

        compile 'com.android.support:appcompat-v7:24.2.1'
        ...
        compile 'com.google.firebase:firebase-messaging:9.6.1'
        compile 'com.google.android.gms:play-services:9.6.1'
        compile 'com.android.support:multidex:1.0.1'

    }
...

принятый ответ не решить мою проблему.

если вы используете Multidex, ваше приложение должно расширяться MultiDexApplication вместо Application.

Мое_приложение.java

public class MyApplication extends MultiDexApplication{
     ...
}

AndroidManifest.xml

<application
      android:name="your.package.name.MyApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      ...
      />

надеюсь, что это помогает.

если вы получите ту же проблему, но уже есть applicationId установить в build.gradle, вы также можете попробовать следующее:

  • в Android Studio:Build>Clean Project
  • в других IDEs: очистить, перестроить, что угодно...

вы должны быть уверены

чтобы добавить эту строку в манифест

https://developer.android.com/studio/run/index.html#instant-run

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

у меня была такая же проблема в Pre леденец устройств. Чтобы решить эту проблему, я сделал следующее. Тем временем я использовал multiDex в проекте.

1. добавьте это для сборки.gradle в модуле: app

multiDexEnabled = true

dexOptions {
    javaMaxHeapSize "4g"
}

2. добавьте эту зависимость

compile 'com.android.support:multidex:1.0.1'

3.Тогда в главном приложении

public class MainApplication extends MultiDexApplication {

private static MainApplication mainApplication;

@Override
public void onCreate() {
    super.onCreate();
    mainApplication = this;
}

@Override
protected void attachBaseContext(Context context) {
    super.attachBaseContext(context);
    MultiDex.install(this);
}


public static synchronized MainApplication getInstance() {
    return mainApplication;
}
}

4.In файл манифестов

<application
    android:allowBackup="true"
    android:name="android.support.multidex.MultiDexApplication"

это работает для меня. Надеюсь, это поможет вам тоже:)

Не включайте всю библиотеку play services, но используйте тот, который вам нужен.Замените строку в вашем построить.gradle:

compile 'com.google.android.gms:play-services:9.6.1'

С соответствующим из Google Play Services API,например:

compile 'com.google.android.gms:play-services-gcm:9.6.1'

добавьте это в сборку на уровне модуля.Gradle в :

android {               
defaultConfig {
    ....
    multiDexEnabled true
}
...
}

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    .........
}

если вы переопределяете Application класс затем расширить его от MultiDexApplication:

YourApplicationClass extends MultiDexApplication

если вы не можете продлить его с MultiDexApplication класс затем переопределить attachBaseContext() метод следующим образом :

protected void attachBaseContext(Context base) {
     super.attachBaseContext(context);
     Multidex.install(this);
  }

и не запускайте ничего раньше MultiDex.install(this) выполняется.

если вы не переопределить Application класс просто отредактируйте файл манифеста следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    .......>
     <application
         ......
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
    ......
</manifest>

внести изменения, как это

в build(приложение) ::

  defaultConfig {
    multiDexEnabled true
  }

dependencies {
compile 'com.android.support:multidex:1.0.1'
}

В Манифесте::

 <application
    android:name=".BaseApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">

В BaseApplication::

public class BaseApplication extends Application{
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
}

это должно работает:

Шаг 1:

defaultConfig {
    applicationId "service.ingreens.com.gpsautoon"
    minSdkVersion 17
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

Шаг 2:

compile 'com.android.support:multidex:1.0.1'

Шаг 3: возьмите другой класс

public class MyApplication extends MultiDexApplication {
}

Шаг 4: добавить эту строку в манифест

<application
    android:name="android.support.multidex.MultiDexApplication">
</application>

в моем случае проблема была решена путем добавления этой строки в сборку модуля.Gradle в:

/ / ДОБАВИТЬ ЭТО В НИЖНЕЙ ЧАСТИ

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

источник

вместо того, чтобы вручную добавлять имя пакета на build.gradle, вы можете сделать это так:

сначала добавьте эту строку в начале

import java.util.regex.Pattern

затем добавьте это в defaultConfig

android {
    ...
    defaultConfig {
        ...
        applicationId = doExtractStringFromManifest("package")
        ...
    }
    ...
}

и, наконец, добавьте метод doExtractStringFromManifest

def doExtractStringFromManifest(name) {
     def manifestFile = file(android.sourceSets.main.manifest.srcFile)
     def pattern = Pattern.compile(name + "=\"(\S+)\"")
     def matcher = pattern.matcher(manifestFile.getText())
     matcher.find()
     return matcher.group(1)
}

поскольку есть много комментариев Cordova к ответу, если вы работаете с Cordova, вы не должны действительно редактировать build.gradle сам, у него есть комментарий в начале, что скажи

/ / СГЕНЕРИРОВАННЫЙ ФАЙЛ! НЕ РЕДАКТИРУЙТЕ!

Итак, если вы используете Cordova, лучшее, что вы можете сделать, это обновить до cordova-android 5.1.0 или выше, где эти изменения уже присутствуют.

мой был потому, что Firebase SDK в файле Gradle был установлен на неправильный номер версии.

Я удалил Firebase debs из Gradle и снова установил их с помощью Firebase Assistant