2015-05-20 5 views
1

Недавно я столкнулся с этой проблемой с эмулятором Android Studio, и я не понимаю, как и почему он появился, потому что до сих пор мой эмулятор и приложение работали нормально.Google Play Services + Android Studio Emulator

Теперь, когда я пытаюсь запустить свое приложение (которое использует Google Map и автозаполнение Google Адресов), отображается сообщение о том, что службы Google Play не установлены. Мне удалось установить его на эмулятор, но приложение все еще не работает нормально. Появится карта Google, но автозаполнение Google Адресов не работает.

Я заметил, что это распространенная проблема среди разработчиков Android, и после некоторых исследований я пытался адаптировать некоторые решения, но проблема остается.

Может ли кто-нибудь помочь мне решить эту проблему и объяснить мне, почему это произошло? Это потому, что некоторые обновления для Android Studio?

(сообщения об ошибках)

05-20 21:56:52.528: A/GmsApplication(2108): Unable to install secure provider, due to exception: 

    05-20 21:56:52.528: A/GmsApplication(2108): java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES. 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ContextImpl.enforce(ContextImpl.java:1914) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1943) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:600) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gsf.f.c(SourceFile:107) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gsf.f.a(SourceFile:121) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gsf.f.a(SourceFile:227) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.a.l.a(SourceFile:301) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.a.e.a(SourceFile:219) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.a.d.c(SourceFile:197) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.a.d.d(SourceFile:208) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.security.ProviderInstallerImpl.insertProviderGated(SourceFile:90) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.google.android.gms.common.app.GmsApplication.onCreate(SourceFile:84) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4556) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ActivityThread.access$1500(ActivityThread.java:151) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.os.Handler.dispatchMessage(Handler.java:102) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.os.Looper.loop(Looper.java:135) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at android.app.ActivityThread.main(ActivityThread.java:5257) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at java.lang.reflect.Method.invoke(Native Method) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at java.lang.reflect.Method.invoke(Method.java:372) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 

    05-20 21:56:52.528: A/GmsApplication(2108):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 


    05-20 21:56:52.552: D/AndroidRuntime(2108): Shutting down VM 


    05-20 21:56:52.560: E/AndroidRuntime(2108): FATAL EXCEPTION: main 

    05-20 21:56:52.560: E/AndroidRuntime(2108): Process: com.google.android.gms, PID: 2108 

    05-20 21:56:52.560: E/AndroidRuntime(2108): java.lang.RuntimeException: Unable to start receiver com.google.android.gms.subscribedfeeds.ConfigurationReceiver: java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES. 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2619) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ActivityThread.access$1700(ActivityThread.java:151) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.os.Handler.dispatchMessage(Handler.java:102) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.os.Looper.loop(Looper.java:135) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ActivityThread.main(ActivityThread.java:5257) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at java.lang.reflect.Method.invoke(Native Method) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at java.lang.reflect.Method.invoke(Method.java:372) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

    05-20 21:56:52.560: E/AndroidRuntime(2108): Caused by: java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES. 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ContextImpl.enforce(ContextImpl.java:1914) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1943) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:600) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.google.android.gsf.f.c(SourceFile:107) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.google.android.gsf.f.a(SourceFile:121) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.google.android.gsf.f.a(SourceFile:182) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at com.google.android.gms.subscribedfeeds.ConfigurationReceiver.onReceive(SourceFile:31) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2612) 

    05-20 21:56:52.560: E/AndroidRuntime(2108):  ... 9 more 

ответ

1

Вы должны запустить приложение на эмуляторе, который имеет API Google, на нем, это вариант, когда вы создаете эмулятор. Просто выберите цель с API, Google, можно увидеть на рисунке:

AVD Screenshot

+0

Я уже пробовал это, и проблема не устранена. Должен ли я попробовать с более низким уровнем API? Я использую уровень 22 (lolipop) ... – BlueHatCoder

+0

Не помешает попробовать другой эмулятор, да –

+0

А также, если вы можете скопировать и вставить здесь сообщение об ошибке –

0

Убедитесь, что у вас есть Google Play Services, установленные в вашем приложении тоже. Добавьте следующие зависимости в файле build.gradle, если вы еще не сделали, что:

dependencies { 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile 'com.google.android.gms:play-services:7.3.0' 
} 

После этого сохраните изменения и нажмите Синхронизировать проект с Gradle файлов на панели инструментов.

Если вы пользуетесь функциями Google Play Services, настоятельно рекомендуется использовать класс GoogleApiClient. Чтобы определить, имеет ли устройство соответствующую версию APK сервисов Google Play, выполните метод обратного вызова onConnectionFailed(). Если соединение не удается из-за отсутствующей или устаревшей версии APK Google Play.

Для неработающего API Autocomplete проверьте, что API_KEY добавлен в файл манифеста, и вызовите GeoDataApi.getAutocompletePredictions(), передавая запрос в виде строки, а также LatLngBounds. Для получения дополнительной информации см. Следующие documentation.

Смежные вопросы