isGooglePlayServicesAvailable导致Android 5中的TransactionTooLargeException

Gra*_*ith 6 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)
Run Code Online (Sandbox Code Playgroud)

Rey*_*cia 0

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

使所有交易保持相对较小的规模。尝试最小化为远程过程调用的参数和返回值创建 Parcel 所需的内存量。避免传输大量字符串或大位图。如果可能的话,尝试将大请求分解成更小的部分。