Application crash using Google maps during map fragment view creation - android

It happens when SupportMapFragment is used, specifically when transaction commited. It started to happen recently on specific device (maybe after update of google play services, couldn't trace it).
Crashes are consistent through all previous app version that was already tested and there was no changes in used libs versions or build tools.
Environment details:
Device LG G3 D855
Google play services lib version 8.4.0
Google play services on device version 9.6.83
Android version 5.0
Build tools version "23.0.2"
Crash stack trace:
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException: Attempt to get length of null array
at maps.G.a.a(Unknown Source)
at maps.V.N.a(Unknown Source)
at maps.D.e.a(Unknown Source)
at maps.D.p.a(Unknown Source)
at maps.ad.ae.a(Unknown Source)
at maps.ad.t.a(Unknown Source)
at maps.ad.M.a(Unknown Source)
at ul.onTransact(:com.google.android.gms.DynamiteModulesB:107)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
at com.google.android.gms.dynamic.zza.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5274)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
Has anyone else witnessed this? If so, were you able to solve it?
In addition to the info provided in the link, I'm using the MultiDex library which I know sometimes causes weird behaviors.
Due to NDA cannot provide any application specific information.

<activity android:name="com.bison.activities.YourActivity"
android:hardwareAccelerated="true"
>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
Try adding this to you activity in manifest.
If it helps study the hardware acceleration in google documentation

Related

isGooglePlayServicesAvailable causes TransactionTooLargeException in Android 5

I have a crash reported by Fabric that during the check for the availability of Google Play Services that on Android 5 devices a crash can occur, particularly in OnePlus, Sony and Zuk devices.
I do not explicitly call this code directly and seems to be invoked by Google's own code.
According to other posts the exeption is thrown when the Parcel is too large, however since I do not control the process, my own code is not responsible for creating the Parcel.
I have checked the release notes for Google Play Services and other posts for no avail. Any suggestions are welcome.
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)
According to official Android documentation, the key to avoiding TransactionTooLargeException is to
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.

DeadObjectException with stacktrace pointing to : android.app.ApplicationPackageManager.getPackageInstaller

I'm seeing in crash being reported in crashlytics which has this stack trace which has no mention of my app code.
I have seen DeadObjectException with com.google.android.gms and there, the crash was triggered when removing listeners.
Also, everytime my app starts, I get the installer for logging purposes, i.e.
packageManager.getInstallerPackageName(my-package-name)
There is no callback associated with this call.
Crash is observed mainly on Lollipop and Kitkat, though few Marshmallow and Nougat users have experienced it too.
Has anyone experienced something similar?
Fatal Exception: java.lang.RuntimeException: android.os.DeadObjectException
at android.app.ApplicationPackageManager.getPackageInstaller(ApplicationPackageManager.java:1632)
at com.google.android.gms.common.zze.zzl(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source:8000)
at com.google.android.gms.internal.zzpy.zzc(Unknown Source:24000)
at com.google.android.gms.internal.zzpv.begin(Unknown Source)
at com.google.android.gms.internal.zzqa.zzc(Unknown Source)
at com.google.android.gms.internal.zzpp.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzk$1.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzd$zzd.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Binder.java)
at android.os.BinderProxy.transact(Binder.java:496)
at android.content.pm.IPackageManager$Stub$Proxy.getPackageInstaller(IPackageManager.java:4229)
at android.app.ApplicationPackageManager.getPackageInstaller(ApplicationPackageManager.java:1629)
at com.google.android.gms.common.zze.zzl(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.getInstance(Unknown Source:8000)
at com.google.android.gms.internal.zzpy.zzc(Unknown Source:24000)
at com.google.android.gms.internal.zzpv.begin(Unknown Source)
at com.google.android.gms.internal.zzqa.zzc(Unknown Source)
at com.google.android.gms.internal.zzpp.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzk$1.onConnectionSuspended(Unknown Source)
at com.google.android.gms.common.internal.zzd$zzd.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Here are the Fabric crashlytics reason for this exception.
DeadObjectExceptions are usually a symptom of a problem occurring somewhere else (likely in a remote process). Even though this exception may be safe to catch, it's worth looking for problems in related services.
This error could mean one of two things:
1) There is a bug (which caused a crash) in an associated process.
2) The other process was killed by the OS.
Source: Fabric crashlytics report.
Resources: Here & Here

Android: SecurityException READ_GSERVICES crash only for one specific user?

I have one specific user whose crashing all the time on this error (full stacktrace included). I'm pointing out that it's only one user because others have no problem whatsoever using the app and experience no such crash.
My manifest doesn't include the READ_GSERVICES permission anymore because my understanding was that it was no longer necessary for google maps (as per this doc). Any ideas why this issue is happening to this one particular user and to nobody else?
My original theory was that this was because the user was using an ancient version of Google Play Services on their phone (see this issue), but the user writes that they are using the "latest version". I am targeting play services version 8.4.0 in my gradle file at the moment. User is running android 6.0.1 and the latest version of my app.
Edit: I made a special apk for this user including the line:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
and it solved the problem. However, I don't want to add what ought to be a useless line for all my users just to solve the problem of one user so the question still remains why this happens for this user at all?
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{[myPKG]}: java.lang.SecurityException: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{myPKG} (pid=4, uid=3539) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by java.lang.SecurityException: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{myPKG} (pid=4, uid=3539) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3550)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4783)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2018)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1468)
at android.content.ContentResolver.query(ContentResolver.java:475)
at android.content.ContentResolver.query(ContentResolver.java:434)
at aff.b(:com.google.android.gms.DynamiteModulesB:225)
at aff.a(:com.google.android.gms.DynamiteModulesB:244)
at jx.(:com.google.android.gms.DynamiteModulesB:80)
at jw.(:com.google.android.gms.DynamiteModulesB:139)
at if.(:com.google.android.gms.DynamiteModulesB:159)
at maps.af.av.a(Unknown Source)
at maps.af.t.a(Unknown Source)
at maps.af.M.a(Unknown Source:2000)
at vw.onTransact(:com.google.android.gms.DynamiteModulesB:107)
at android.os.Binder.transact(Binder.java:387)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
at com.google.android.gms.dynamic.zza.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.Fragment.performStart(Fragment.java:1996)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1102)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:2051)
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:185)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
at android.app.Activity.performStart(Activity.java:6268)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Google maps Activity not working after update sdk

After update to android studio 1.3.2 and the latest version of sdk , i have this error on my Apps please any one have any idea to resolve this problem.
Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 7895000 but found 7571000. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
at com.google.android.gms.common.GooglePlayServicesUtil.zzad(Unknown Source)
at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.maps.internal.zzy.zzaG(Unknown Source)
at com.google.android.gms.maps.internal.zzy.zzaF(Unknown Source)
at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.zzwP(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.onCreate(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onCreate(Unknown Source)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:978)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1175)
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1277)
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2232)
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:111)
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:278)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:78)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:329)
            at android.app.Activity.setContentView(Activity.java:1944)
            at com.mac125.muslimtools_tunisie.activities.MapsActivity.onCreate(MapsActivity.java:21)
            at android.app.Activity.performCreate(Activity.java:5264)
I think you/Android Studio did not update the Google Play Services Version correctly.
From the error message, you can see Android Studio is complaining about the outdated version 7571000 (which is 7.5), and the current version should be 7895000 (7.8)
Changing this number should fix the problem.
I am guessing that you are following some kind of tutorial and you copied their manifest, for usually people put #integer/google_play_services_version and reference to the integer/google_play_services_version for the newest version (even Android Studio display it as a number)
Try to add
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
in your xml

Unexplained IncompatibleClassChangeError In Stable Released App Caused by GoogleMaps

I have just received this strange crash report from a user in my Google Play Developer Console.
The app is stable at the moment and this is the first time I have seen this crash. It has been in release for 3/4 months now. The device was a Galaxy S5 running Android Version 5.0.
My initial thoughts is Google Play Services has updated causing issues. Any better offers?
java.lang.IncompatibleClassChangeError: Class 'java.lang.reflect.ArtMethod' does not implement interface 'android.os.Parcelable$Creator' in call to 'java.lang.Object android.os.Parcelable$Creator.createFromParcel(android.os.Parcel)' (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
at com.google.android.gms.common.internal.safeparcel.SafeParcelReader.createParcelable(SafeParcelReader.java:227)
at com.google.android.gms.maps.GoogleMapOptionsCreator.createFromParcel(GoogleMapOptionsCreator.java:93)
at com.google.android.gms.maps.internal.ICreator$Stub.onTransact(ICreator.java:74)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.ah.a(SourceFile:204)
at com.google.android.gms.maps.internal.CreatorImpl.a(SourceFile:110)
at com.google.android.gms.maps.internal.ag.onTransact(SourceFile:79)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.am.a(Unknown Source)
at com.google.android.gms.maps.l.f(Unknown Source)
at com.google.android.gms.maps.l.a(Unknown Source)
at com.google.android.gms.a.b.a(Unknown Source)
at com.google.android.gms.a.b.a(Unknown Source)
at com.google.android.gms.maps.MapView.a(Unknown Source)
at com.myapp.c.d.onActivityCreated(Unknown Source)
at android.support.v4.app.Fragment.performActivityCreated(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
at android.support.v4.app.BackStackRecord.run(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
at android.support.v4.app.FragmentActivity.onStart(Unknown Source)
at com.myapp.Activity.onStart(Unknown Source)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1234)
at android.app.Activity.performStart(Activity.java:6258)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2621)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2725)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
ADDITION Have just found this thread which is about other people experiencing the same crash on Samsung devices.
This was related to issue 8314. This issue has now been fixed via both a Firmware update from Samsung and also an update to Google Play Services.
If this helped you, please mark this as the correct answer.

Categories

Resources