简体   繁体   English

由于minSdkVersion,无法在Android项目中使用新方法

[英]Can't use new methods in the Android project due to minSdkVersion

I want to support API Level 14+ devices, so minSdkVersion of my android project is "14" now. 我想支持API级别14+设备,因此我的android项目的minSdkVersion现在为“ 14”。

But I can't call newer methods, even though I put those code in if statements. 但是,即使我将这些代码放入if语句中,也无法调用较新的方法。

if (Build.VERSION.SDK_INT >= 18) {
    // new method calls
    Log.i("MY_APP", "Total: " + new StatFs("/sdcard").getTotalBytes());
} else {
    // deprecated method calls
}

And <uses-sdk/> tag in AndroidManifest.xml is this. AndroidManifest.xml中的<uses-sdk/>标签是这个。

<uses-sdk
   android:minSdkVersion="14"
   android:targetSdkVersion="21" />

The error message is like this. 错误消息是这样的。

Call requires API level 18 (current min is 14): android.os.StatFs#getTotalBytes 调用需要API级别18(当前最小值为14):android.os.StatFs#getTotalBytes

In order to compile this project, I have to change minSdkVersion attribute 为了编译该项目,我必须更改minSdkVersion属性

but this doesn't help at all, because I lose support for older devices. 但这根本没有帮助,因为我失去了对旧设备的支持。

I tried adjusting targetSdkVersion too, but this doesn't work. 我也尝试过调整targetSdkVersion ,但这是行不通的。

How can I compile my project without changing minSdkVersion? 如何在不更改minSdkVersion的情况下编译项目?

Do I have to use deprecated methods only? 我是否只需要使用不赞成使用的方法?

Is there any chances for deprecated methods to be removed soon? 是否有可能很快删除不赞成使用的方法?

PS. PS。 I'm using eclipse but not Android Studio now. 我正在使用eclipse,但现在不使用Android Studio。

Modify your gradle file to look something like this: 修改gradle文件,使其看起来像这样:

android {
    compileSdkVersion 23 // for example
    // other stuff...

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        //...
    }
    //...
}

Set targetSdkVersion to the highest API on which app has been tested. 将targetSdkVersion设置为已测试应用程序的最高API。 Keep targetSdkVersion and compileSdkVersion the same. 保持targetSdkVersion和compileSdkVersion相同。

EDIT: 编辑:

Okay, so you said you are using Eclipse (please change it already to Android Studio! :)) so you can use these in AndroidManifest.xml: 好的,所以您说您正在使用Eclipse(请将其更改为Android Studio!:)),以便可以在AndroidManifest.xml中使用它们:

<uses-sdk 
      android:minSdkVersion="14"
      android:targetSdkVersion="23" />

Reference 参考

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM