我在google开发者控制台上遇到了这个奇怪的错误。所以我使用谷歌云测试实验室来了解真正发生的事情。结果我的应用程序几乎在所有设备上都失败了
FATAL EXCEPTION: main
Process: com.blackcurrantapps.iamin, PID: 16706
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)
现在这是有趣的部分,我甚至根本不在我的应用中使用Firebase 。当我在整个应用程序中查找路径时,没有引用“Firebase”这个词。我虽然使用谷歌云服务,登录和谷歌应用程序引擎。
这是我的build.gradle文件:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.blackcurrantapps.iamin"
minSdkVersion 16
targetSdkVersion 23
versionCode 11
versionName "Fixed Check in Bug"
multiDexEnabled = true
}
buildTypes {
release {
shrinkResources true
// minifyEnabled true
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
dexOptions {
javaMaxHeapSize "4g"
}
}
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/groups/public/" }
maven { url "https://jitpack.io" }
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.mikepenz:materialdrawer:4.5.8@aar') {
transitive = true
}
compile 'com.mikepenz:google-material-typeface:1.2.0.1@aar' //Google Material Design Icons
compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar'
compile('com.vincentbrison.openlibraries.android:dualcache:2.2.2@jar') {
transitive = true;
}
compile project(':htmlDialog')
compile('com.twitter.sdk.android:twitter:1.8.0@aar') {
transitive = true;
}
compile 'com.android.support:palette-v7:23.4.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.google.android.gms:play-services-maps:9.0.0'
compile 'com.google.android.gms:play-services-gcm:9.0.0'
compile 'com.google.android.gms:play-services-identity:9.0.0'
compile 'com.google.android.gms:play-services-base:9.0.0'
compile 'com.google.android.gms:play-services-plus:9.0.0'
compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile 'com.google.android.gms:play-services-location:9.0.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.rengwuxian.materialedittext:library:2.1.3'
compile 'com.twotoasters.jazzylistview:library:1.2.1'
compile 'com.twotoasters.jazzylistview:library-recyclerview:1.2.1'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.getbase:floatingactionbutton:1.10.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.6.0'
compile 'me.dm7.barcodescanner:zbar:1.8.3'
compile 'net.glxn.qrgen:android:2.0'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.pavelsikun:material-seekbar-preference:0.12.1+'
compile project(path: ':backend', configuration: 'android-endpoints')
}
有人可以帮助我吗?
答案 0 :(得分:19)
感谢您发布问题Sanket。我是Firebase测试实验室(原云测试实验室)的PM。想告诉你,这是我们最终应该修复的错误。
您的应用似乎正在使用最新最好的Google Play服务。我们上周更新了我们的设备以使用它们,然后我们发现了一个让我们恢复到旧版本的错误。现在,我们在我们的设备上重新部署了最新的Play服务,因此重新运行测试应该可行。如果没有,请告诉我,我们会调查并修复它。
答案 1 :(得分:14)
我找到了一个适合我的解决方案。我正在导入整个谷歌播放服务9.0.1库。临时解决方法是仅导入应用程序实际需要的API。您可以获取API here的完整列表。
答案 2 :(得分:6)
根据我的情况:使用FCM和Google地图
//for FCM
compile 'com.google.firebase:firebase-messaging:9.4.0'
//for Map
compile 'com.google.android.gms:play-services:9.4.0'
我已修复: 删除
compile 'com.google.android.gms:play-services:9.4.0'
和使用
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
工作正常。
答案 3 :(得分:4)
如果这可以帮助其他我用这个来解决这个问题,虽然这与Firebase无关,但它实际上解决了我的崩溃
将compile 'com.android.support:multidex:1.0.1'
添加到app / build.gradle。
将android:name="android.support.multidex.MultiDexApplication"
添加到AndroidManifest.xml中的应用程序代码中。
如果您使用的是自定义Application类,请跳过AndroidManifest.xml并使Application类扩展MultiDexApplication而不是Application。
答案 4 :(得分:3)
您必须使用com.google.firebase:firebase-ads:9.0.2 AdMob 在Android依赖项上,
compile 'com.google.firebase:firebase-ads:9.0.2'
并删除您的
play-services (com.google.android.gms: play-services:9.0.2)
对我有用!
答案 5 :(得分:3)
您尝试按照代码段进行操作:
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
public class Controller extends Application {
@Override
protected void attachBaseContext(Context newBase)
{
super.attachBaseContext(newBase);
MultiDex.install(this);
}
}
答案 6 :(得分:2)
只需将Google Play服务依赖关系降级为compile 'com.google.android.gms:play-services:8.3.0'
,问题就会解决。
答案 7 :(得分:2)
我希望现在还为时不晚。 Firebase造成了麻烦,因此我将其排除在外。 我刚刚在模块gradle上添加了这个:
temp = A[ first ];
A[ first ] = A[ i ]; //this value should be set to red color
A[ i ] = temp; //this too
答案 8 :(得分:1)
原来我对MultiDex
的使用是错误的,并导致此错误。
这应该在官方文档中提到过。
在Gradle.build(应用级别)
dependencies {
compile 'com.android.support:multidex:1.0.1'
在清单中, 添加
<application
android:name=".Global"
...
在Application类中,
public class Global extends MultiDexApplication {
...
}
答案 9 :(得分:1)
在Android 4.4中,解决方案与此类似(https://stackoverflow.com/a/38707231/3377472):
- 我有Google Play服务修订版33
1)配置build.gradle和依赖项
启用multidex支持并添加multidex库
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "packagename"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
//------- Enabling multidex support----------.
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "3g"//use 3Gb of ram to launch android
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile 'com.android.support:multidex:1.0.1' // 1.0.0
// if you are using google maps
compile 'com.google.android.gms:play-services-maps:9.2.0'
compile 'com.google.android.gms:play-services-location:9.2.0'
}
2)编辑清单,并添加此android:name
<application
android:name="android.support.multidex.MultiDexApplication"
...
.....
activity
android:name="packagename.Application"
....
...
</activity>
3)申请类
- 我的应用程序类是:
import android.support.multidex.MultiDex;
public class Application extends AppCompatActivity {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//this is the solution
MultiDex.install(this);
setContentView(R.layout.layout_example);
----
----
答案 10 :(得分:0)
不确定这是否有帮助,但我使用Android sdk 19时遇到了同样的问题,这让我感到疯狂。我不使用Firebase(至少不是故意的) 我不知道为什么,但是当我设置&#34; minifyEnabled true&#34;时错误停止了。在gradle配置中。
我发现你的发布部分已经注释了你的内容。
答案 11 :(得分:0)
如果您使用的是Google Play服务,请确保添加特定服务。例如 使用地图时:
compile 'com.google.android.gms:play-services-maps:x.x.x
而不是
compile 'com.google.android.gms:play-services:9.6.1'
这将减小代码的大小,编译不需要使用“multidex”功能。 如果你偶然已经包括
{
multiDexEnabled true
}
在您的代码中尝试删除它和不必要的库引用