isGooglePlayServicesAvailable导致Android 5中的TransactionTooLargeException

时间:2018-01-08 14:02:03

标签: android google-play-services

我发布Fabric报告称,在检查Google Play服务的可用性时,在Android 5设备上可能会发生崩溃,特别是在OnePlus,Sony和Zuk设备中。

我没有直接明确调用此代码,似乎是由Google自己的代码调用的。

根据其他帖子,当包裹太大时会抛出异常,但由于我不控制该过程,我自己的代码不负责创建包裹。

我已查看Google Play服务及其他帖子的发行说明,但无济于事。欢迎任何建议。

Fatal Exception: java.lang.RuntimeException: Package manager has died
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:112)
       at com.google.android.gms.common.zzo.isGooglePlayServicesAvailable(Unknown Source)
       at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source)
       at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbr.connect(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.zzb(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.handleMessage(Unknown Source)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:135)
       at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by android.os.TransactionTooLargeException
       at android.os.BinderProxy.transactNative(Binder.java)
       at android.os.BinderProxy.transact(Binder.java:496)
       at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:1876)
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:107)
       at com.google.android.gms.common.zzo.isGooglePlayServicesAvailable(Unknown Source)
       at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source)
       at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbr.connect(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.zzb(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.handleMessage(Unknown Source)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:135)
       at android.os.HandlerThread.run(HandlerThread.java:61)

1 个答案:

答案 0 :(得分:0)

根据官方Android文档,avoiding TransactionTooLargeException的关键是

  

保持所有交易相对较小。尽量减少数量   为参数和返回创建包的内存   远程过程调用的值。避免转移大量的   字符串或大位图。如果可能的话,尝试分解大量请求   分成小块。