제공자 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'
}
...
수락된 답변이 제 문제를 해결하지 못했습니다.
하는 경우 응용 에서 "" "" "" "" "" "" ""를 확장해야 .MultiDexApplication
에 Application
.
내 응용 프로그램.자바
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인 장치만 사용할 수 있습니다.
교체하는 것만으로 해결했습니다.Application
MainApplication.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.MultiDex
androidx.multidex.MultiDex
효과가 있었습니다.
"multidex"를 활성화하면 문제가 해결되지만 이 문제는 모두 Android 스튜디오 캐시에 관한 것입니다.따라서 "multidex" clear cache를 추가하기 전에 이 문제가 해결되기를 바랍니다.
제.gradle
,.idea
그리고..build
파일을 삭제할 수 있습니다.
Android studio
>File
>Invalidate Caches / Restart
이름을 수으로 이추는 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를 했습니다.multiDexEnabled
false
이 해결책은 저에게 효과가 있었습니다.
동일한 문제가 발생하여 프로젝트 수준 충돌 분석 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
'source' 카테고리의 다른 글
연속된 각 시퀀스에 대한 그룹 번호 생성 (0) | 2023.06.14 |
---|---|
데이터, 방법 및 계산을 글로벌 가치로 만들려면 어떻게 해야 합니까? (0) | 2023.06.14 |
Python으로 Excel 외부 데이터 새로 고침 (0) | 2023.06.14 |
XA 트랜잭션의 데이터 일관성 (0) | 2023.06.14 |
요소가 하나만 있는 "싱글톤" 튜플을 만드는 방법 (0) | 2023.06.14 |