Странное взаимодействие сервисов Google Play и WebView

#android #webview #google-play-services

#Android #webview #google-play-services

Вопрос:

У меня есть приложение, которое использует Vision API от Google и имеет WebView, который показывает некоторый интернет-контент. Когда файл build.gradle содержит эту строку:

скомпилируйте ‘com.google.android.gms: play-services: 8 ‘ все компилируется и работает нормально.

Я хочу использовать последнюю версию, поэтому меняю ее на:

скомпилируйте ‘com.google.android.gms: play-services: 9.6.1’

Затем я достиг предела в 64 КБ ссылок на методы в файле .dex, используя библиотеку multidex, и изменение моего файла манифеста не решает проблему.

Итак, я попробовал детализированный подход и изменил строку на:

скомпилируйте ‘com.google.android.gms: play-services-vision:9.6.1’

Затем он компилируется нормально, но при запуске каждая попытка загрузить URL-адрес в WebView завершается неудачей, и onReceivedError вызывается с кодом ошибки -1.

Я не знаю, важно ли это, но фактическое использование WebView выполняется из библиотеки, которая не имеет ничего общего с Play Services.

Кто-нибудь может что-нибудь предложить? Спасибо

Ответ №1:

Затем я достиг предела в 64 КБ ссылок на методы в файле .dex

Потому что он содержит больше, чем 56k методы.

com.google.android.gms:play-services-vision:9.6.1 предназначен для мобильного зрения.

Однако я могу помочь вам преодолеть ограничение в 64 метода, выполните следующие действия

Но сначала убедитесь, что у вас есть разрешение

 <uses-permission android:name="android.permission.INTERNET" />
  

и активное подключение к Интернету.

Сначала поместите это в свой buidl.gradle

 dependencies {
    compile 'com.android.support:multidex:1.0.1'
}
  

затем поместите multiDexEnabled true

 android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 24
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }

}
  

Затем перейдите на свой menifest и в тег вашего приложения

 <application
    android:name="android.support.multidex.MultiDexApplication">
  

Я надеюсь, что это решит вашу проблему.

Комментарии:

1. Я уже выполнил эти шаги и не помог, как я сказал в своем вопросе

2. Я принимаю ваш ответ, поскольку проблема заключалась в отсутствующем разрешении! При детальном подходе мне даже не нужен multidex. Но как это происходило при загрузке URL-адресов с Play Services версии 8, и раньше у вас не возникало этой проблемы?

3. часть с правами доступа к Интернету была немного глючной в более старом API, это позволяло подключаться большую часть времени без разрешений. Однажды я создавал приложение, и в нем была реклама, а после выпуска я обнаружил, что для Интернета не добавлено разрешение, и реклама работала нормально