应用程序在从 Play 商店首次启动时崩溃

Posted

技术标签:

【中文标题】应用程序在从 Play 商店首次启动时崩溃【英文标题】:App crashing on first launch from play store 【发布时间】:2020-02-04 13:23:34 【问题描述】:

当我从 android studio 安装它时,应用程序运行良好,但是当我从 playstore 下载它时,它在第一次启动时崩溃,之后它运行正常。

这是我在崩溃日志中得到的。

Fatal Exception: java.lang.RuntimeException: Unable to instantiate receiver 
com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver:
java.lang.ClassNotFoundException: Didn't find class"com.google. android.gms.measurement.AppMeasurementInstallReferrerReceiver" 
on path: DexPathList[[zip file "/data/app/==/base.apk"],nativeLibraryDirectories =[/data/app==/lib/arm64, /==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]

我用谷歌搜索了这个,并更新了我的 gradle 文件,但崩溃仍然存在。

  force 'com.google.firebase:firebase-analytics-impl:16.0.0'
  force 'com.google.android.gms:play-services-measurement-base:16.0.0'
  force 'com.google.android.gms:play-services-measurement-sdk:16.0.1'
  force 'com.google.android.gms:play-services-measurement-sdk-api:16.0.1'
  force 'com.google.android.gms:play-services-measurement-impl:16.0.0'

我还在清单文件中添加了以下内容以避免崩溃。

<receiver
        android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
        android:permission="android.permission.INSTALL_PACKAGES"
        android:enabled="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"/>
        </intent-filter>
    </receiver>

【问题讨论】:

【参考方案1】:

如果设备上未安装 Google Play 服务 apk,或者对于您的应用要求而言太旧,则可能会出现此问题。

您可以通过以下方式检查是否有最低 Google Play Service 版本可用:

Dialog errorDialog;

private boolean checkPlayServices() 

        GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();

        int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this, minApkVersion);

        if (resultCode != ConnectionResult.SUCCESS) 
            if (googleApiAvailability.isUserResolvableError(resultCode)) 

                if (errorDialog == null) 
                    errorDialog = googleApiAvailability.getErrorDialog(this, resultCode, 2404);
                    errorDialog.setCancelable(false);
                

                if (!errorDialog.isShowing())
                    errorDialog.show();

            
        

        return resultCode == ConnectionResult.SUCCESS;

minApkVersion 是您的应用所需的最低 Google Play 服务 apk 版本。

并在您应用的启动画面的onResume() 中调用此方法:

@Override
protected void onResume() 
    super.onResume();
    if (checkPlayServices()) 
        startApp();
    

【讨论】:

以上是关于应用程序在从 Play 商店首次启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

首次启动后应用程序崩溃

从 Play 商店安装时,Android Cordova 应用程序崩溃

由于核心数据迁移,应用程序在从应用商店更新后崩溃

应用程序作为 APK 运行,但通过 Play 商店发布时崩溃

在 Flutter 中从 Play 商店获取产品时应用内购买崩溃

解决Google Play商店崩溃问题