Подтвердить что ты не робот

Получение ошибки: не удалось найти класс '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 {
    }
}

спасибо за помощь

4b9b3361

Ответ 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'