英文:
I am getting the following error during runtime when running my app: java.lang.NoSuchMethodError: No virtual method setTokenProvider
问题
在从Android Studio的模拟器中运行我的应用程序时,我遇到了以下错误。该应用程序成功编译。
java.lang.NoSuchMethodError:在类Lcom/google/firebase/FirebaseApp中找不到虚拟方法setTokenProvider(Lcom/google/firebase/internal/InternalTokenProvider;)V,或者在其父类中找不到('com.google.firebase.FirebaseApp'的声明出现在/data/app/~~_7zL9Id2RK7b6zEuTNlmiQ==/com.example.abc_supermarket-2V5eMXxz7SuahQK49NOpSw==/base.apk中)
我的Gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.abc_supermarket"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'com.google.firebase:firebase-database:19.5.0'
implementation 'com.google.firebase:firebase-storage:19.2.0'
implementation 'com.google.firebase:firebase-auth:16.0.5'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
// For Card view
implementation 'androidx.cardview:cardview:1.0.0'
// Chart and graph library
implementation 'com.github.blackfizz:eazegraph:1.2.5l@aar'
implementation 'com.nineoldandroids:library:2.4.0'
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
}
在我向应用程序添加Firebase Storage后,这个错误只开始出现。我在Stack Overflow上只找到一个关于这个错误的帖子,但提供的唯一解决方案对我没有起作用。关于这个特定错误的在线信息似乎不多,所以我在这里急需帮助。非常感谢任何回复。
附注:我在使用Android Studio方面还是比较新手。
英文:
I am encountering this error when running my app in an emulator from Android Studio. The app compiles successfully.
> java.lang.NoSuchMethodError: No virtual method setTokenProvider(Lcom/google/firebase/internal/InternalTokenProvider;)V in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/~~_7zL9Id2RK7b6zEuTNlmiQ==/com.example.abc_supermarket-2V5eMXxz7SuahQK49NOpSw==/base.apk)
My Gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.abc_supermarket"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'com.google.firebase:firebase-database:19.5.0'
implementation 'com.google.firebase:firebase-storage:19.2.0'
implementation 'com.google.firebase:firebase-auth:16.0.5'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
// For Card view
implementation 'androidx.cardview:cardview:1.0.0'
// Chart and graph library
implementation 'com.github.blackfizz:eazegraph:1.2.5l@aar'
implementation 'com.nineoldandroids:library:2.4.0'
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
}
The error only started occurring after I added Firebase Storage to my app. I have found only one other post about this error on SO and the only solution provided did not work for me. There doesn't seem to be much information about this particular error online so I am coming here in desperate need of help. All responses are greatly appreciated
PS. I am still quite new to working with Android Studio
答案1
得分: 0
也许是因为你正在使用旧版的 Firebase 认证,而同时又在使用最新版的 Firebase 存储。关于这个问题,Firebase 发布说明 提供了详细信息:
implementation 'com.google.firebase:firebase-auth:16.0.5'
> 这次更新的重要变化包括:
> - 如果你在使用 Firebase 认证,务必将 firebase-auth 更新至 v17.0.0 或更新的版本,以确保其功能与其他已更新的 Firebase 库保持一致。
> - 几个库将最低支持的 Android API 版本升级至 16,以符合 Google Play 服务的分发政策。
> - 在项目级别的 build.gradle 文件中,确保在 buildscript 和 allprojects 部分都包含了 Google 的 Maven 仓库。
只需将其更新到新版本的 Firebase 认证即可。
英文:
Maybe it's because you're using old firebase auth and latest firebase storage and Firebase release notes provided details :
implementation 'com.google.firebase:firebase-auth:16.0.5'
> Breaking changes for this update:
> - If you use Firebase Authentication, update to firebase-auth v17.0.0 or later to ensure functionality alignment with other updated Firebase libraries.
> - Several libraries updated minSdkVersion to API level 16 to align with the Google Play
> services distribution policy.
> - In your project-level build.gradle file, make sure to include Google's Maven repository in both your buildscript and allprojects sections.
Just change it to new version of firebase auth
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论