source

제공자 com.google을 가져올 수 없습니다.화력 기지파이어베이스Init 공급자

manysource 2023. 6. 14. 21:55

제공자 com.google을 가져올 수 없습니다.화력 기지파이어베이스Init 공급자

새로운 크래시 툴을 테스트 중입니다. 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

1.

applicationId를 application의 build.gradle에 추가합니다.

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

Than Clean Project -> Build or Rebuild Project


minSdkVersion <= 20 (https://developer.android.com/studio/build/multidex) )인 경우

멀티덱스를 올바르게 사용합니다.

응용 프로그램의 빌드.그래들

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

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

manifest.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);
    }
}

manifest.xml

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

에서도 같은 만, 에게 그 즉 SDK < 22의 SDK < 22의 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 

    }
}

app/build.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'

    }
...

수락된 답변이 제 문제를 해결하지 못했습니다.

하는 경우 응용 에서 "" "" "" "" "" "" ""를 확장해야 .MultiDexApplicationApplication.

내 응용 프로그램.자바

public class MyApplication extends MultiDexApplication{
     ...
}

Android Manifest.xml

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

도움이 되길 바랍니다.

했지만 이미 가 applicationId에넣다에 build.gradle다음을 시도할 수도 있습니다.

  • Android Studio 파일:Build>Clean Project
  • 다른 IDE:청소, 재건, 뭐든지...
  • 빌드 디렉토리 및 다른 캐시 또는 중간 빌드 파일을 삭제합니다.

저도 Pr 롤리팝 기기에서 같은 문제를 겪었습니다.그것을 해결하기 위해 저는 다음과 같이 했습니다.그동안 저는 프로젝트에서 멀티덱스를 사용했습니다.

build합니다. 파일: app 파일: build.gradle입니다.

multiDexEnabled = true

dexOptions {
    javaMaxHeapSize "4g"
}

이 종속성을 추가합니다.

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. 매니페스트 파일에서

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

이것은 나에게 효과가 있습니다.이것도 도움이 되길 바랍니다 :)

당신은 확신해야 합니다.

당신의 매니페스트에 이 행을 추가하기 위해.

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>

전체 플레이 서비스 라이브러리를 포함하지 않고 필요한 라이브러리를 사용합니다.build.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'

모듈 수준의 build.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>

이렇게 하면 됩니다.

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>

저의 경우 모듈 build.gradle에 이 행을 추가하여 문제를 해결했습니다.

맨 아래에 추가

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

원천

반응 네이티브 앱의 경우 오류는 다음과 같습니다.java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider"Android 버전이 < ~4.4인 장치만 사용할 수 있습니다.

교체하는 것만으로 해결했습니다.ApplicationMainApplication.java와 함께MultiDexApplication

참고:import android.support.multidex.MultiDexApplication;

저의 경우 안드로이드X로 마이그레이션한 후 문제가 발생했습니다.어떤 이유에서인지 앱에서 MultiDex.install()을 호출하고 있었습니다.

    final Class<?> clazz = Class.forName("android.support.multidex.MultiDex");
    final Method method = clazz.getDeclaredMethod("install", Context.class);
    method.invoke(null, this);

를 를변지경습다니에서 했습니다.android.support.multidex.MultiDexandroidx.multidex.MultiDex효과가 있었습니다.

"multidex"를 활성화하면 문제가 해결되지만 이 문제는 모두 Android 스튜디오 캐시에 관한 것입니다.따라서 "multidex" clear cache를 추가하기 전에 이 문제가 해결되기를 바랍니다.

.gradle,.idea그리고..build파일을 삭제할 수 있습니다.

Android studio>File>Invalidate Caches / Restart

enter image description here

이름을 수으로 이추는 build.gradle다음과 같은 방법으로 수행할 수 있습니다.

처음에 이 줄을 추가합니다.

import java.util.regex.Pattern

그런 다음 기본 구성에 추가합니다.

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)
}

코르도바와 을 하고 코르도바를 .build.gradle당신 자신, 그것은 처음에 다음과 같은 논평을 가지고 있습니다.

생성된 파일! 편집하지 마십시오!

따라서 Cordova를 사용하는 경우 이 변경사항이 이미 있는 Cordova-android 5.1.0 이상으로 업데이트하는 것이 가장 좋습니다.

나는 Gradle 파일의 Firebase SDK가 잘못된 번호 버전으로 설정되었기 때문입니다.

하고 Gradle을 사용하여 했습니다.Firebase Assistant

합니다(Android 스튜누설이동(안드로이드)).Ctrl+Alt+S 를 합니다.Instant Run를 선택 취소합니다.Enable Instant Run.

사용 안 함으로 설정Instant Run응용 프로그램을 다시 실행하면 문제가 해결됩니다.

proguard 파일에 다음 코드를 추가했습니다.

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application

제 경우에는 효과가 있었습니다.

저의 경우 빌드 그래들에 파이어베이스 코어를 추가(또는 실수로 삭제)하는 것을 잊었습니다.

implementation 'com.google.firebase:firebase-core:xx.x.x'

API가 21보다 낮은 기기에서만 이 오류가 발생했습니다.저의 경우, 저는 프로젝트를 진행해야 했습니다.multiDexEnabled할 수 있습니다.build.gradle 이설정어있으로 되었습니다.true APK를 했습니다.multiDexEnabledfalse이 해결책은 저에게 효과가 있었습니다.

동일한 문제가 발생하여 프로젝트 수준 충돌 분석 Gradle 버전 2.1.1을 사용하여 수정했습니다.

classpath 'com.google.firebase:firebase-crashlytics-gradle:2.1.1'

언급URL : https://stackoverflow.com/questions/37312103/unable-to-get-provider-com-google-firebase-provider-firebaseinitprovider