草庐IT

android - isGooglePlayServicesAvailable 在 Android 5 中导致 TransactionTooLargeException

coder 2023-12-05 原文

我收到 Fabric 报告的崩溃,在检查 Android 5 设备上的 Google Play 服务可用性时可能会发生崩溃,尤其是在 OnePlus、Sony 和 Zuk 设备中。

我没有明确直接调用这段代码,似乎是由谷歌自己的代码调用的。

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

我已经查看了 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)

最佳答案

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

keep all transactions relatively small. Try to minimize the amount of memory needed to create a Parcel for the arguments and the return value of the remote procedure call. Avoid transferring huge arrays of strings or large bitmaps. If possible, try to break up big requests into smaller pieces.

关于android - isGooglePlayServicesAvailable 在 Android 5 中导致 TransactionTooLargeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48151902/

有关android - isGooglePlayServicesAvailable 在 Android 5 中导致 TransactionTooLargeException的更多相关文章

随机推荐