【问题标题】:Why My android app crashes as soon as I open it in device 4.4.3 but not in device 5.0 or above为什么我的 android 应用程序在设备 4.4.3 中打开后立即崩溃,但在设备 5.0 或更高版本中却没有
【发布时间】:2025-12-23 01:10:11
【问题描述】:

我已使用 facebook sdk 登录 facebook,还使用 ​​google map 获取用户当前位置。它在 android 5.o 或更高版本中运行良好,但在 android 4.4.3 中崩溃。我使用了以下配置。

 android {
             compileSdkVersion 24
             buildToolsVersion "24.0.0"

             defaultConfig {
                 applicationId "com.example.nuevo.getsocial"
                 minSdkVersion 15
                 targetSdkVersion 24
                 versionCode 1
                 versionName "1.0"
                 multiDexEnabled true
             }
             buildTypes {
                 release {
                     minifyEnabled false
                     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                 }
             }
             dexOptions{
                 javaMaxHeapSize "4g"
             }
         }
         repositories {
             mavenCentral()
         }

         dependencies {
             compile fileTree(dir: 'libs', include: ['*.jar'])
             testCompile 'junit:junit:4.12'
             compile project(path: ':volley')
             compile 'com.android.support:appcompat-v7:24.2.0'
             compile 'com.facebook.android:facebook-android-sdk:4.7.0'
             compile 'com.squareup.picasso:picasso:`enter code here`2.4.0'
             compile 'com.google.android.gms:play-services:9.4.0'
             compile 'com.android.support:design:24.2.0'
             compile 'com.google.android.gms:play-services-ads:9.4.0'
             compile 'com.google.android.gms:play-services-auth:9.4.0'
             compile 'com.google.android.gms:play-services-gcm:9.4.0'
         }

Logcat如下

446/com.example.nuevo.getsocial E/dalvikvm:找不到类 'com.google.firebase.FirebaseOptions',引用自方法 com.google.firebase.FirebaseApp。 08-29 02:41:35.041 1446-1446/com.example.nuevo.getsocial E/dalvikvm:找不到类 'com.google.firebase.FirebaseApp$zzb',引用自方法 com.google.firebase.FirebaseApp.zzcm 08-29 02:41:35.045 1446-1446/com.example.nuevo.getsocial E/dalvikvm:找不到类 'com.google.firebase.FirebaseApiNotAvailableException',引用 来自方法 com.google.firebase.FirebaseApp.getToken 08-29 02:41:35.049 1446-1446/com.example.nuevo.getsocial E/dalvikvm:可以 找不到类 'com.google.firebase.FirebaseApp$zza',引用自 方法 com.google.firebase.FirebaseApp.zza 08-29 02:41:35.081 1446-1446/com.example.nuevo.getsocial E/AndroidRuntime:致命 例外:主进程:com.example.nuevo.getsocial,PID:1446 java.lang.NoClassDefFoundError:com.google.firebase.FirebaseOptions 在 com.google.firebase.FirebaseApp.zzek(未知来源)在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知 来源)在 android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知 来源)在 android.app.ActivityThread.installProvider(ActivityThread.java:4774) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:4369) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4309) 在 android.app.ActivityThread.access$1500(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5001) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 还添加崩溃日志。
  • 请添加崩溃日志
  • 在 4.4.3 设备上你是使用 apk 还是 adb 来安装应用程序?
  • 请添加崩溃日志
  • 您应该添加崩溃日志。另外,我认为这与您设置的“multiDexEnabled”选项有关。我认为您还应该添加“com.android.support:multidex:1.0.0”库。

标签: android android-studio android-facebook android-googleapiclient


【解决方案1】:

将您的 appcompat 和设计库替换为 gradle 依赖项

compile 'com.android.support:appcompat-v7:24.0.0-alpha1'
    compile 'com.android.support:design:24.0.0-alpha1'

【讨论】:

    【解决方案2】:

    根据Android Studio用户指南:Multidex support prior to Android 5.0

    Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时执行应用代码。默认情况下,Dalvik 将应用程序限制为每个 APK 单个 classes.dex 字节码文件。为了绕过这个限制,您可以使用multidex support library,它成为您应用的主要 DEX 文件的一部分,然后管理对其他 DEX 文件及其包含的代码的访问。

    在您的情况下,如果您支持旧版本的 Android,则需要在您的 gradle 依赖项中包含 com.android.support:multidex:1.0.0

    【讨论】:

    • 已编辑。感谢您的回复。
    • 您可以通过将其标记为工作解决方案来关闭此问题。
    最近更新 更多