programing

예외 java.lang을 가져오는 중입니다.ClassDefFoundError가 없습니다. com.google.화력 기지새 Firebase로 업데이트한 후의 Firebase 옵션

javamemo 2023. 7. 4. 21:38
반응형

예외 java.lang을 가져오는 중입니다.ClassDefFoundError가 없습니다. com.google.화력 기지새 Firebase로 업데이트한 후의 Firebase 옵션

나는 이것을 사용하여 내 애플리케이션을 새로운 파이어베이스로 업데이트했고 이제 내 프로젝트를 컴파일할 때 다음과 같은 예외가 발생합니다.

여기 로그캣이 있습니다.

11:57:54.533 27844-27844/com.example.dayshift_2.traveyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dayshift_2.traveyy, PID: 27844
java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1591)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:4871)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4466)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4406)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

My Build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.example.dayshift_2.traveyy"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'
}
}

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

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.google.android.gms:play-services:9.0.0'
compile 'com.google.firebase:firebase-database:9.0.0'
compile 'com.google.firebase:firebase-auth:9.0.0'
compile 'com.android.support:support-v13:23.3.0'
compile 'com.roughike:bottom-bar:1.2.1'
}


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

이 예외를 어디서 얻었는지 잘 모르겠습니다.도움을 주시면 대단히 감사하겠습니다.감사해요.

이것은 저에게 효과가 있었습니다.

  1. 아직 'Google Play Services'를 업데이트하지 않았다면 Android SDK Manager > Extras에서 Revision 30으로 업데이트하십시오.

Android SDK Manager > Extras > Google Play Services

  1. 그런 다음 줄을 추가합니다.compile 'com.android.support:multidex:1.0.1'종속 관계(또는 단순히 제거)multiDexEnabled true필요하지 않은 경우)

  2. 매니페스트의 응용 프로그램 태그에 다음 속성을 추가합니다.android:name="android.support.multidex.MultiDexApplication"
    Android Manifest에 이미 정의된 사용자 지정 응용 프로그램 클래스가 있는 경우 다음에서 확장MultiDexApplication대신에Application

도움이 되었기를 바랍니다!

최신 Google Play 서비스를 사용하지만 작동하지 않습니다.나에게 이 절차는 효과가 있습니다.

  1. 내 응용 프로그램 클래스 업데이트:

    public class App extends Application {
      @Override
      protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
     }
    }
    
  2. 업데이트됨build.gradle파일:

    defaultConfig {
        ...
        multiDexEnabled true
    }
    
  3. 포함된 종속성:

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

남자를 고치는 것은 매우 간단합니다.프로젝트에서 플레이어 서비스와 파이어베이스를 모두 사용하는 경우 Google에서 사용 가능한 모든 서비스를 가져오지 않도록 하십시오.당신이 실제로 필요로 하는 API를 가져오기만 하면 됩니다.예:

 compile 'com.google.firebase:firebase-messaging:9.2.0'
 compile 'com.google.android.gms:play-services:9.2.0'

이런 식으로 하면 당신에게 실수를 저지를 수 없습니다.이 문제 해결

재생 서비스를 제거하고 프로젝트를 동기화합니다.앱에서 광고나 지도를 사용하는 것과 같은 의존성이 있다면 특정 API를 정의합니다.예:

compile 'com.google.android.gms:play-services-maps:9.2.0'

참고: 최대값은 multiDexEnabled true를 사용하려고 하지 않습니다.이것이 무언가를 고치는 마지막 단계가 되어야 합니다.

이것이 도움이 되기를 바랍니다.

Google Play-Service 종속성을 에서 다운그레이드했습니다.

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

로.

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

그것이 저에게 이 문제를 해결해 주었습니다.

자세한 내용은 다음 스택 오버플로 링크를 참조하십시오.


참고:최신 Google Play-Service로 업그레이드 시
compile 'com.google.android.gms:play-services:9.4.0'그것은 또한 이 문제를 해결했습니다.

또는 모든 Google Play 서비스를 가져오는 대신 필요한 특정 서비스를 선택적으로 가져올 수 있습니다.

1단계: 다중 인덱스 수정

응용 프로그램 클래스:

public class StudyNApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
 }

그레이드 파일

defaultConfig { 
...
multiDexEnabled true
}

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

2단계: java.lang을 수정합니다.ClassDefFoundError가 없습니다. com.google.화력 기지Firebase 옵션

제거한다.

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

lib 두 개 추가:

compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'

잘 작동했습니다.

그것을 잊지 마세요.

android:name="android.support.multidex.MultiDexApplication"

이것을 추가하고 8.4.0 컴파일 'com.google.android.gms:play-services:8.4.0'으로 플레이 서비스 종속성을 낮춤으로써 해결했습니다.

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

그리고 매니페스트에 다음 사항을 추가합니다.

android:name="android.support.multidex.MultiDexApplication"

목표치를 증가시켰을 때도 같은 오류에 직면했습니다.SDK Version 22시부터 23시까지 저는 이 문제를 해결하기 위해 최소 하루를 보냈습니다.이제 드디어 당신의 build.gradle 파일에서 다른 play 서비스 api를 사용하는 결과를 찾았습니다. 출처: https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project

저는 관련 API만 추가했고 제 앱은 잘 작동하고 있습니다.

문제를 해결하려면 다중 인덱스용 앱을 구성하십시오.

위해서minSdkVersion 21세트 이상multiDexEnabled다음과 같이 모듈 레벨 build.gradle 파일에 true로 표시됩니다.

android {
  defaultConfig {
    //...
    minSdkVersion 21 
    targetSdkVersion 26
    multiDexEnabled true
   }
  //...
 }

위해서minSdkVersion API 20 이

  1. 를 합니다.module-level build.gradle다음과 같이 멀티덱스 라이브러리를 종속성으로 추가합니다.

    android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } //... } dependencies { compile 'com.android.support:multidex:1.0.1' }

  2. 클래스를 재정의하지 않는 경우 다음을(를) 편집합니다.manifestandroid:name응용 프로그램 태그에 다음과 같이 표시됩니다.

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

    2.1.1. 클래스를 재정의하는 경우 ExtendMultiDexApplication

    public class MyApplication extends MultiDexApplication { //... }
    

    2.1.2. 또는 클래스를 재정의하지만 기본 클래스를 변경할 수 없는 경우에는 대신attachBaseContext()MultiDex.install(")은 MultiDex입니다.

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

좀더 mdex-gradle을 위하여.

이것이 같은 문제에 직면한 다른 사람들에게 도움이 되기를 바랍니다.

는 이 답변에서 이 문제에 대한 해결책을 찾았다고 생각합니다. 한번 보고 감사합니다, @Gabriele Mariotti, 그는 다음과 같이 썼습니다.

최상위 build.gradle에서 다음을 추가해야 합니다.

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

그런 다음 build.gradle 모듈에서 다음을 수행합니다.

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ... 

}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(**R.string.default_web_client_id**))
            .requestEmail()
            .build();

같은 경우에 requestId를 변경했습니다.토큰이 효과가 있었습니다.

dependencies {
compile 'com.android.support:support-v4:25.0.1'
compile 'com.google.firebase:firebase-ads:9.0.2'
compile files('libs/StartAppInApp-3.5.0.jar')
compile 'com.android.support:multidex:1.0.1'    
}  

: 플그인적:'com.google.gms.google-services'.

해결하려고 노력합니다...

그라들 줄로

multiDexEnabled true

com.dll을 컴파일합니다.지원:multidex:1.0.1'

매니페스트 파일

응용 프로그램 태그 이 줄 추가

안드로이드:name="android.support.multidex.MultiDex 응용 프로그램"

이러한 바쁜 솔루션을 모두 수행하기 전에 Android Studio에서 Clean Project 또는 Rebuild Project를 시도해 보십시오.

java.lang. NoClassDefFoundError

프로젝트에서 클래스 이름을 변경할 때 예외가 발생하지만 런타임에서 변경한 내용을 가져올 수 없습니다.

의 종속성을 다운그레이드합니다.build.gradle파일 이름:

출처:

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

대상:

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

이것은 제 경우에도 효과가 있었습니다, 당신도 그러길 바랍니다.

언급URL : https://stackoverflow.com/questions/37360126/getting-exception-java-lang-noclassdeffounderror-com-google-firebase-firebaseop

반응형