android-PlacesAutocompleteTextView icon indicating copy to clipboard operation
android-PlacesAutocompleteTextView copied to clipboard

App crash when uploading my app to playstore

Open dorperez opened this issue 3 years ago • 2 comments

Hello everyone,

I am using this script in my app and when I try to use it after uploading it to play services the app crash.

When I enter the app and choosing the autocompletetextview and try to write something, its crash. In the debug version eveerything is working just fine and I don't know why.

Crash report:

java.lang.AssertionError: 
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
  at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
  at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:214)
  at android.os.HandlerThread.run (HandlerThread.java:67)
Caused by: java.lang.AssertionError: 
  at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init> (TypeAdapters.java:87)
  at com.google.gson.internal.bind.TypeAdapters$30.create (TypeAdapters.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
  at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
  at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:214)
  at android.os.HandlerThread.run (HandlerThread.java:67)
Caused by: java.lang.NoSuchFieldException: 
  at java.lang.Class.getField (Class.java:1604)
  at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init> (TypeAdapters.java:34)
  at com.google.gson.internal.bind.TypeAdapters$30.create (TypeAdapters.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
  at com.google.gson.Gson.getAdapter (Gson.java:68)
  or                     .setDelegate (Gson.java:68)
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.google.gson.Gson.fromJson (Gson.java)
  at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
  at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
  at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
  at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
  at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:214)
  at android.os.HandlerThread.run (HandlerThread.java:67)

dorperez avatar May 27 '21 05:05 dorperez

@dorperez it sounds like you might be having an issue with proguard/r8 minification of your app. since gson uses reflection to access fields during json parsing, you need to make sure that the field names are not being obfuscated by proguard.

Try adding a rule like this to your proguard configuration:

-keep class com.seatgeek.placesautocomplete.model.** { *; }

sddamico avatar May 27 '21 13:05 sddamico

There's actually an "Caused by: java.lang.AssertionError:" in the log, are you doing this in your code :

throw new AssertionError();

erikswed avatar May 27 '21 15:05 erikswed