#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, это позволяло подключаться большую часть времени без разрешений. Однажды я создавал приложение, и в нем была реклама, а после выпуска я обнаружил, что для Интернета не добавлено разрешение, и реклама работала нормально