如何解决从播放控制台安装应用程序后,Google Places API 崩溃
在将我的应用上传到 Play 商店之前,我在 Play 控制台中创建了一个测试版本。 该应用程序有一个地点自动完成字段,但是,当我从 Playstore 安装我的应用程序的测试版本时,每次我在自动完成字段中写一些东西然后按空格键它就会崩溃!
在 android studio 上测试应用时,它运行完美,没有任何错误或崩溃。
感谢您的帮助。
编辑:我正在使用这个自动完成库 (https://github.com/seatgeek/android-PlacesAutocompleteTextView)
这是崩溃报告标题:
java.lang.AssertionError
崩溃报告:
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)
解决方法
所以它是 proguard,我必须将库包含在“proguard-rules.pro”中,如下所示:
-keep class com.seatgeek.*{ *; }
-keep class com.seatgeek.placesautocomplete**{ *; }
-keep class com.seatgeek.placesautocomplete.json**{ *; }
-keepclassmembers enum com.seatgeek.* { *; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。