Multidex,Proguard和Firebase

问题描述 投票:0回答:1

当我将Firebase Auth和Database添加到我的项目时,出现以下问题:

 FATAL EXCEPTION: main Process: com.myapp, PID: 4024          java.lang.RuntimeException: Unable to get provider    com.google.firebase.provider.FirebaseInitProvider:    java.lang.ClassNotFoundException: Didn't find class   "com.google.firebase.provider.FirebaseInitProvider" on path:   DexPathList[[zip file "/data/app/com.myapp-NTr4rdWkzRUXkEy5dItLzQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-NTr4rdWkzRUXkEy5dItLzQ==/lib/arm64, /system/lib64, /system/vendor/lib64]]

因此应用程序关闭,我搜索了互联网,发现它可能是Multidex,但是我尝试添加Multidex并发生以下错误:

  FATAL EXCEPTION: main Process: com.myapp, PID: java.lang.ClassNotFoundException: Didn't find class ".MyApplication" on path: DexPathList[[zip file "/data/app/com.myapp-NTr4rdWkzRUXkEy5dItLzQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-NTr4rdWkzRUXkEy5dItLzQ==/lib/arm64, /system/lib64, /system/vendor/lib64]]

这是我的gradle文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 29

 defaultConfig {
    applicationId "com.appssociety.mathapp"
    minSdkVersion 16
    targetSdkVersion 29
    versionCode 1
    versionName "1.0.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            
    }
 }
}

dependencies {
compile 'com.google.firebase:firebase-auth:+'
compile 'com.google.firebase:firebase-database:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'androidx.multidex:multidex:2.0.0+'
compile 'androidx.appcompat:appcompat:1.0.0'
compile 'androidx.legacy:legacy-support-v4:1.0.0'
compile 'com.google.android.material:material:1.0.0-rc01'
compile 'androidx.cardview:cardview:1.0.0'
}

如某些论坛中所述,应用程序必须包含MyApplication类

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

并且在应用程序标签中

android:name="MyApplication"

我试图使用proguard维护FirebaseInitProvider类,但是它没有用。该应用程序也停止工作!

我还检查了dex文件,并且FirebaseInitProvider在APK内。

任何解决方案?

android firebase proguard androidx android-multidex
1个回答
0
投票

将此添加到您的proguard文件中

© www.soinside.com 2019 - 2024. All rights reserved.