Getting error: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza

Getting error: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza

当我尝试 运行 phone 早于 API 级别 22 的应用程序时,我收到此错误并且程序崩溃。但是该应用程序在 phone 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:2.4.0@aar') {
        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 {
    }
}

感谢帮助

经过几天的时间解决了这个奇怪的问题,终于找到了崩溃的原因。虽然错误依旧,但现在程序运行没有任何问题。

程序在 API 级别 22 下运行正常而在 21 以下运行不正常的原因是 android 中的方法限制为 65K。 21 以上原生支持从应用程序 APK 文件加载多个 dex 文件,而 21 以下则不支持。文件说明 here

这个问题的解决办法在

如果您使用 google 播放服务,而不是编译整个 APIs,有选择地编译可能会有所帮助。您可以找到更多详细信息 here.

我遵循了jackaal提到的第二种方法。我在 gradle 中包含了整个播放服务。删除它并仅选择所需的播放服务后 apis 解决了我的问题。

由于播放服务有很多api,方法总数本身就超过了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'