Android O StorageManager新方法获取NoSuchMethodError

Android O StorageManager新方法获取NoSuchMethodError,android,android-8.0-oreo,Android,Android 8.0 Oreo,我正在运行Andorid studio 3.0 Canary 1。 该设备运行androido预览 这是我的应用程序的build.gradle: apply plugin: 'com.android.application' android { compileSdkVersion 'android-O' buildToolsVersion '26.0.0-rc2' defaultConfig { applicationId "com.testqouta"

我正在运行Andorid studio 3.0 Canary 1。 该设备运行androido预览 这是我的应用程序的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-O'
    buildToolsVersion '26.0.0-rc2'
    defaultConfig {
        applicationId "com.testqouta"
        minSdkVersion 19
        targetSdkVersion 'O'
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:appcompat-v7:26.0.0-beta1'
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
这是项目的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-O'
    buildToolsVersion '26.0.0-rc2'
    defaultConfig {
        applicationId "com.testqouta"
        minSdkVersion 19
        targetSdkVersion 'O'
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:appcompat-v7:26.0.0-beta1'
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
当我尝试执行这行代码时:

StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
storageManager.getCacheQuotaBytes(storageManager.getUuidForPath(getCacheDir()));
我的应用程序因以下异常而崩溃:

java.lang.NoSuchMethodError: No virtual method getCacheQuotaBytes(Ljava/util/UUID;)J in class Landroid/os/storage/StorageManager; or its super classes (declaration of 'android.os.storage.StorageManager' appears in /system/framework/framework.jar)
                                                                                  at com.testqouta.MainActivity.onCreate(MainActivity.java:25)
                                                                                  at android.app.Activity.performCreate(Activity.java:6767)
                                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1195)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2699)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
                                                                                  at android.app.ActivityThread.-wrap12(Unknown Source:0)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1537)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:154)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6408)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:232)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)
应用程序在
getCacheQuotaBytes
GetUUIDorPath
上崩溃


值得一提的是,这些方法来自新的Android O API。

…您正在运行Android O Preview的设备上测试这些方法吗?@DavidMedenjak是的。我已经更新了这个问题。