Получение исключения java.ленг.NoClassDefFoundError: com.гуглить.опорному пункту.FirebaseOptions после обновления на новую огневую базу
я обновил свое приложение до новой firebase с помощью этой и теперь, когда я скомпилировать мой проект, я получаю следующее исключение.
вот мой logcat:
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.access00(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)
мой построить.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'
не уверен, откуда я получаю это исключение. любая помощь будет высоко ценится. Спасибо
14 ответов:
это сработало для меня:
- если вы еще этого не сделали, обновите свои "службы Google Play" до версии 30 из Android SDK Manager > дополнительно.
а затем добавить строку
compile 'com.android.support:multidex:1.0.1'
к вашим зависимостям (или просто удалитьmultiDexEnabled true
если не требуется)добавьте этот атрибут в тег приложения в манифесте:
android:name="android.support.multidex.MultiDexApplication"
если у вас уже есть пользовательское приложение класс, определенный в Манифесте Android, расширьте его отMultiDexApplication
вместоApplication
надеюсь, что это помогло!
использование последних сервисов Google Play, но не работает. Для меня эта процедура работает:
обновлен мой класс приложения:
public class App extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
Обновлено
build.gradle
file:defaultConfig { ... multiDexEnabled true }
включен зависимостей:
dependencies { compile 'com.android.support:multidex:1.0.0' }
это так просто исправить, ребята.Если вы используете player-services и firebase в своем проекте, убедитесь, что вы не импортируете все доступные службы в google.Просто импортируйте API, что вам действительно нужно. Например:
compile 'com.google.firebase:firebase-messaging:9.2.0' compile 'com.google.android.gms:play-services:9.2.0'
делая таким образом, он может дать вам noclassdeffounderror. чтобы исправить это
удалите play-services и синхронизируйте свой проект. Если у вас есть зависимость, например, с помощью рекламы или карт в вашем приложении, а затем определить конкретный 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-servicecompile 'com.google.android.gms:play-services:9.4.0'
Он также решил эту проблему.или вы можете выборочно импортировать определенные услуги что вам требуется, а не импортировать все сервисы google play.
Шаг 1: исправить multidex
класс применения:
public class StudyNApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }
Grade file
defaultConfig { ... multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' }
Шаг 2: исправить java.ленг.NoClassDefFoundError: com.гуглить.опорному пункту.FirebaseOptions
удалить
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'
Он работал нормально.
Я решена путем добавления этого и понижение играть-сервис несамостоятельных в 8.4.0 компиляции в COM.гуглить.андроид.gms: play-services: 8.4.0'
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); MultiDex.install(this); }
и добавить следующее в манифест
android:name="android.support.multidex.MultiDexApplication"
Я столкнулся с той же ошибкой, когда я увеличил targetSDKVersion с 22 до 23 я потратил минимум целый день, чтобы решить эту проблему. Теперь, наконец, я нахожу результат, который использует другой api play service в вашей сборке.файл gradle Источник: https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project
Я добавил только соответствующие API, и мое приложение работает нормально.
Я думаю, что нашел решение этой проблемы на этом ответ, пожалуйста, дайте ему посмотреть и поблагодарить @Gabriele Mariotti он писал:
в вашей сборке верхнего уровня.gradle вы должны добавить:
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:3.0.0' } }
затем в модуле сборки.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();
в моем же случае я изменил requestIdToken и это сработало.
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'
.
попытаться решить...
в файле Gradle
multiDexEnabled true
compile ' com.андроид.поддержка:multidex:1.0.1'
файл манифеста
тег приложения добавить эту строку
android: name= " android.поддержка.мультидекс.MultiDexApplication"
настройка приложения для multidex для решения этой проблемы.
на
minSdkVersion
21 или выше setmultiDexEnabled
до правда в сборке на уровне модуля.файл Gradle, как показано ниже:android { defaultConfig { //... minSdkVersion 21 targetSdkVersion 26 multiDexEnabled true } //... }
на
minSdkVersion
API 20 или ниже
изменить
module-level build.gradle
и добавить библиотеку multidex в качестве зависимость, как показано ниже:
android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } //... } dependencies { compile 'com.android.support:multidex:1.0.1' }
если вы не переопределить
Application
класса, редактировать установитьandroid: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. Если вы переопределите
Application
класс ExtendMultiDexApplication
public class MyApplication extends MultiDexApplication { //... }
2.1.2. Или если вы переопределите
Application
класс, но это не возможно изменить базовый класс, то вы можете вместо этого переопределитьattachBaseContext()
метод и вызов MultiDex.установите (это), чтобы включить multidex:
public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
дополнительные mdex-gradle
надеюсь, что это поможет другим, кто сталкивается с той же проблемой.