当地图尝试初始化时,APK崩溃的应用程序崩溃

时间:2018-03-14 18:47:22

标签: android-studio apk google-maps-api-2

当我通过Android Studio运行app时,它可以完美运行。但是,当我从apk版本运行它或调试时,它崩溃地图初始化问题:

Ensure that the "Google Maps Android API v2" is enabled.

Ensure that the following Android Key exists:

API Key: AIzaSyBGDr2AfW0_cH_qhU-EnwCBFir-BKtfgQc

Android Application (<cert_fingerprint>;<package_name>): null;

    FATAL EXCEPTION: main Process: com.techacademy.demomaps, PID: 1406 
                                            java.lang.NullPointerException
                                                                            at android.os.Parcel.readException(Parcel.java:1478)
                                                                            at android.os.Parcel.readException(Parcel.java:1426)
                                                                            at com.google.android.gms.location.internal.zzg$zza$zza.zza(Unknown Source)
                                                                            at com.google.android.gms.location.internal.zzi.zza(Unknown Source)
                                                                            at com.google.android.gms.location.internal.zzj.zza(Unknown Source)
                                                                            at com.google.android.gms.location.internal.zzd$1.zza(Unknown Source)
                                                                            at com.google.android.gms.location.internal.zzd$1.zza(Unknown Source)
                                                                            at com.google.android.gms.common.api.zza$zza.zzb(Unknown Source)
                                                                            at com.google.android.gms.common.api.zzd.zza(Unknown Source)
                                                                            at com.google.android.gms.common.api.zzd.zzb(Unknown Source)
                                                                            at com.google.android.gms.common.api.zzg.zzb(Unknown Source)
                                                                            at com.google.android.gms.location.internal.zzd.requestLocationUpdates(Unknown Source)
                                                                            at com.techacademy.demomaps.MapsActivity.onConnected(MapsActivity.java:392)
                                                                            at com.google.android.gms.common.internal.zzj.zzg(Unknown Source)
                                                                            at com.google.android.gms.common.api.zze.zzmH(Unknown Source)
                                                                            at com.google.android.gms.common.api.zze.onConnected(Unknown Source)
                                                                            at com.google.android.gms.common.api.zzg$2.onConnected(Unknown Source)
                                                                            at com.google.android.gms.common.internal.zzi$zzg.zznO(Unknown Source)
                                                                            at com.google.android.gms.common.internal.zzi$zza.zzc(Unknown Source)
                                                                            at com.google.android.gms.common.internal.zzi$zza.zzr(Unknown Source)
                                                                            at com.google.android.gms.common.internal.zzi$zzc.zznQ(Unknown Source)
                                                                            at com.google.android.gms.common.internal.zzi$zzb.handleMessage(Unknown Source)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5590)
                                                                            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:1268)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                                                                            at dalvik.system.NativeStart.main(Native Method)

但在其他设备上APK完美无缺

  

此外,在启动应用时,Google Play Market停止工作

1 个答案:

答案 0 :(得分:1)

对我有用的东西,这要感谢Google的支持:

除了行中的问题,我遇到了几乎相同的问题:

Android Application (<cert_fingerprint>;<package_name>): null;

我可以在null;之后看到我的应用程序的软件包名称

对我来说,问题是相同的,它仅在我的测试设备上不起作用,但在其他地方(包括仿真器)都起作用。我的测试设备正在运行KitKat(API级别19)。

因此要检查的事情是:

  1. 通常在字符串资源文件中的API密钥的值实际上在“发布”字符串资源文件中。由于存在这些不同的文件,分别用于调试和发布apk版本。

  2. 根据不起作用的设备,确保minSdkVersion为19或更早版本。

之后,在与Google支持人员联系后,我们意识到de app不会崩溃,并且地图将以调试模式显示,但是由于另一个原因,我在此代码行中因我提出的https请求而再次崩溃:

ufferedReader(InputStreamReader(inputStream)).use {

因此,显然这是我的真正问题。就像Google支持小组的亚当所说:

“我怀疑它与OS的版本有关;并且由于特定的SSL错误,它似乎在这里得到阐明。”

”“默认情况下,直到5.0才在Android上启用TLS v1.2(大概是因为它尚不存在);尽管由于安全补丁程序更新,此版本之前的设备通常具有启用该功能的能力。除非您在代码中指定强制使用TLS1.2,否则SSL协议中将存在不匹配,并且请求将失败。“

他为我指出了这个回答:

http://stackoverflow.com/a/33567745/3202633

我遵循了它,并且能够解决我的问题!据我了解,此响应建议是在自定义SSLSocketFactory类的此API级别中启用TLS1.2,该类受支持,但默认情况下未启用。而且我认为运行Maps通信需要此安全协议,并且在调试模式下,它的处理方式有所不同。

我希望这对您或遇到这种奇怪事情的任何人有帮助。