Получение ошибки: не удалось найти class ‘android.app.AppOpsManager’, на который ссылается метод com.google.android.gms.common.GooglePlayServicesUtil.zza
Я получаю эту ошибку и сбой программы, когда я пытаюсь запустить приложение на телефоне старше 22 года по API. Однако приложение отлично работает на телефоне с уровнем API уровня 22. Что может быть причиной этого.
вот мои зависимости:
dependencies { compile 'com.google.code.gson:gson:2.3' compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:recyclerview-v7:+' compile 'com.android.support:support-v4:22.2.0' compile 'com.google.android.gms:play-services:7.5.0' compile 'com.facebook.android:facebook-android-sdk:4.3.0' compile 'com.google.android.gms:play-services-analytics:7.5.0' compile project(':volley') compile project(':adjust_SDK') compile project(':euromessageLib') compile project(':com_viewpagerindicator') compile files('libs/adxtag3.2.6.jar') compile files('libs/jsoup-1.7.3.jar') compile files('libs/CWAC-Adapter.jar') compile files('libs/newrelic.android.jar') compile files('libs/android-query-full.0.26.8.jar') compile files('libs/khandroid-httpclient-4.2.3.jar') compile files('libs/GoogleConversionTrackingSdk-2.2.1.jar') compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { transitive = true; } }
а также
- Вызов собственного метода дважды из сторонней библиотеки в Activity приводит к закрытию приложения Android
- Использование андроида: процесс
- Как установить GridView внутри ScrollView
- Как установить все приложение только в портретном режиме?
- Как работает андроид: noHistory = "true"?
android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.deneme" minSdkVersion 14 targetSdkVersion 22 multiDexEnabled true } buildTypes { release { minifyEnabled true proguardFiles 'proguard.cfg' } } productFlavors { } }
Спасибо за помощь
- android CountDownTimer - дополнительная задержка в миллисекундах между тиками
- Приложение Android Webview не позволит проигрывателю проигрывать весь экран
- Убить другое приложение на Android?
- Wait Firebase async извлекает данные на Android
- Mipmaps vs. drawable folders
- Android OpenAL?
- Изменить правильную маржу в представлении Programmatically?
- SoftKeyboard открыть и закрыть прослушиватель в Android-приложении?
Проведя пару дней, чтобы решить эту странную проблему, наконец нашел причину аварии. Хотя ошибка сохраняется, программа работает без каких-либо проблем.
Причина, по которой программа работает отлично с уровнем API 22, а не с ниже 21, является пределом метода в android, который составляет 65K. Выше 21 изначально поддерживает загрузку нескольких файлов dex из файлов APK приложения, где ниже 21 нет. В документе указано это здесь
Решение этой проблемы решается в этой статье stackoverflow post
или
если вы используете сервисы Google Play, вместо компиляции всех API, выборочная компиляция может помочь. Здесь вы можете найти более подробную информацию.
Я следовал второму подходу, упомянутому jackaal. Я включил все игровые сервисы в свою gradleу. После удаления этого и выбора только необходимых игровых сервисов apis исправил мою проблему.
Так как игровые сервисы имеют много апитов, общий счет метода превышает 65 тысяч. Таким образом, это вызывает ошибку в мобильных телефонах с уровнем api 21 и ниже.
Перед gradleиентом: –
compile 'com.google.android.gms:play-services:8.4.0'
После gradleуировки: –
compile 'com.google.android.gms:play-services-analytics:8.4.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' compile 'com.google.android.gms:play-services-location:8.4.0' compile 'com.google.android.gms:play-services-plus:8.4.0'