【问题标题】:Getting error: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza出现错误:找不到类 'android.app.AppOpsManager',从方法 com.google.android.gms.common.GooglePlayServicesUtil.zza 引用
【发布时间】:2015-07-10 13:58:14
【问题描述】:

当我尝试在 API 级别 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: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 {
    }
}

感谢帮助

【问题讨论】:

  • 我认为您使用了一些仅在 sdk 22 中可用的主题
  • 尝试 targetSdkVersion set 19 并尝试这个
  • 还是不行

标签: android google-play-services


【解决方案1】:

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

程序在 API 级别 22 下运行良好而不是低于 21 的原因是 android 中的方法限制为 65K。 21 以上原生支持从应用 APK 文件加载多个 dex 文件,而 21 以下不支持。文件指出它here

这个问题的解决方法在this stackoverflow post解决

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

【讨论】:

  • 如果我的方法少于 64k 并且仍然发生这种情况怎么办?
  • @PedroOliveira 我认为在清单中添加 android:largeHeap="true" 可以解决您的问题
【解决方案2】:

我遵循了jackaal提到的第二种方法。我已经在我的 gradle 中包含了整个游戏服务。删除此内容并仅选择所需的播放服务 api 后,我的问题得以解决。

由于播放服务有很多api,所以方法总数本身就超过了65k。所以这会导致 api 级别 21 及以下的手机出错。

毕业前:-

compile 'com.google.android.gms:play-services:8.4.0'

毕业后:-

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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多