Получение ошибки: не удалось найти класс 'android.app.AppOpsManager', на который ссылается метод com.google.android.gms.common.GooglePlayServicesUtil.zza
Я получаю эту ошибку и сбой программы, когда я пытаюсь запустить приложение на телефоне старше 22 года. Однако приложение отлично работает на телефоне с уровнем 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;
}
}
и
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 {
}
}
спасибо за помощь
Ответы
Ответ 1
Проведя пару дней, чтобы решить эту странную проблему, наконец, нашел причину аварии. Хотя ошибка сохраняется, программа запускается без каких-либо проблем.
Причина, по которой программа работает нормально с уровнем API 22, а не с ниже 21, является пределом метода в android, который составляет 65K. Выше 21 изначально поддерживает загрузку нескольких файлов dex из файлов APK приложения, где ниже 21 нет. В документах указано здесь
Решение этой проблемы решается на fooobar.com/questions/229070/...
или
если вы используете сервисы google play, вместо компиляции всех API-интерфейсов, выборочная компиляция может помочь. Вы можете найти более подробную информацию здесь.
Ответ 2
Я следил за вторым подходом, упомянутым jackaal. Я включил все игровые сервисы в свой gradle. После удаления этого и выбора только необходимых сервисов воспроизведения apis исправил мою проблему.
Так как игровые сервисы имеют много apis, суммарный счет метода больше 65K. Таким образом, это приводит к ошибке в мобильных телефонах с уровнем 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'