如何摆脱“呼叫需要API级别26(当前最小值为24)”?

时间:2018-01-21 13:22:37

标签: android android-studio android-gradle build.gradle

如何告诉Android Studio (3.0.1)不要在IntelliSense中显示API 26个功能?这很容易让人误解。 如果我不能使用它们,为什么要提出这些功能?

示例:如果我使用java.util.Date,它会告诉我:

  

'Date(int,int,int)'自API 16起已弃用:Android 4.1 (Jelly Bean)

如果我使用java.time.Localtime,我会得到:

  

需要API level 26(当前分钟为API 24

我的gradle是否正确?我希望该应用能够在Android 7.0 max。

上运行
apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdkVersion 24
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.8'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'io.paperdb:paperdb:2.6'
    implementation 'com.github.yukuku:ambilwarna:2.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

谢谢!

2 个答案:

答案 0 :(得分:1)

我制作了一个Java类,之后找到了解决方案

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
    createChannels();
}

createChannels是我的方法。

答案 1 :(得分:0)

  从API 16开始,不推荐使用

Date(int,int,int)'

已弃用,但您仍然可以使用,只是意味着可能有更好的方式。

  

我希望该应用在Android 7.0上运行。

Nougat 7.0 - 7.1.2,API 24 - 25

您可以测试哪个API设备正在运行,因此不要在旧设备上运行更高级的命令,否则会导致设备崩溃。此SDK_INT自DonutAndroid 1.6 / API4)。

起可用

if(android.os.Build.VERSION.SDK_INT> = android.os.Build.VERSION_CODES.LOLLIPOP)

将build.gradle 更改为仅使用API 24

android {
    compileSdkVersion 24
    //each version of the Android Gradle Plugin now has a default version of the build tools.
    //buildToolsVersion "24.0.1" //minimum supported version (26.0.2) for Android Gradle Plugin 3.0.1
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 24
    }
    dependencies {
        //you don't need these with support:design
        implementation 'com.android.support:appcompat-v7:24.0.1'
        implementation 'com.android.support:support-v4:24.1.0'

        implementation 'com.android.support:design:24+' //26 for AS 3 ?
    }

注释

compile配置现在为deprecated,应由implementationAPI替换。)
support-library
compileSdkVersion是您提问的要点。我按照你的要求做了,但通常的做法是尽可能高地编译(compileSdkVersion),并尽可能低,以支持更多设备(minSdkVersion)。