如何在Android Studio中为项目设置最低API级别?

16

我最近将一个项目迁移到了Android Studio 0.4.3。编译时,它给了我几行Java代码的错误提示,包括以下内容:

FragmentManager fm = getFragmentManager();

fm.findFragmentById()

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

getResources().getStringArray(R.array.course_descriptions); 

我看到了以下错误信息:

Call requires API level 11 (current min is 7)

我正在运行Android Studio 0.4.3。我也通过SDK管理器下载了Android 4.4.2(API 19)。

我在清单文件中添加了以下行:

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" /> 
我执行了“同步项目与Gradle文件”,清理并重建了项目。但我仍然看到相同的错误。
我该如何解决这个问题?

嗨,我认为你正在使用另一个版本的Android(不是19)。如果你在Eclipse上,可以尝试在项目属性中,选择Android库,检查那里是否有正确的API 19。祝好。 - JSG33kC0d3
我刚发现了一件有趣的事情。Studio捕获了一个bug: java.lang.ArrayIndexOutOfBoundsException: 20 at org.jetbrains.android.dom.converters.ApiVersionConverter.getApiLevelLabel(ApiVersionConverter.java:57) - Marius
6个回答

34

我有0.8.6版本,可以按照以下步骤进行操作:

在菜单中选择:文件 -> 项目结构。

在打开的菜单中,导航到 app,然后在选项卡中选择 Flavors

输入图像描述


2
在Android Studio 1.2.2中:您提出更改后,应运行“与Gradle文件同步项目”(位于工具栏中运行图标右侧某处的图标按钮)以应用更改。 - Universe

17

如果您在最近的Android Studio版本上生成了您的项目,则该设置位于gradle配置文件中。在您的应用程序模块中找到build.gradle文件。应该会有类似于以下内容的内容。

defaultConfig {
    minSdkVersion 7
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
}

7
从gradle构建系统开始,所有与sdk和编译API相关的设置都将被你在build.gradle文件中定义的内容所覆盖。
因此,如果你想要避免混淆,可以将所有这些配置从AndroidManifest.xml中删除,并仅在build.gradle文件中保留它们。
请在模块的build.gradle文件中检查抛出错误的minSdkVersion
android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 7      // Change 7 to 11 will solve your problem
        targetSdkVersion 19
    }

}

我更喜欢将所有配置都放在顶层项目的build.gradle文件中,因为如果不同模块的配置不同,你最终会遇到 Manifest Merging 错误。


2
在截至2020的最新版本中,请按照以下步骤执行:
  1. 点击文件(左上角)
  2. 进入项目结构(Ctrl + Alt + Shift + S)
  3. 点击模块
  4. 在右侧窗格中,点击默认配置(中间位置)
  5. 更改最小SDK版本
  6. 应用并点击确定
完成!

1

只需按照以下步骤操作(适用于Android Studio用户):

  1. 右键点击App目录
  2. 选择“模块设置”选项
  3. 更改所需的ADK平台
  4. 点击应用

就这样,Gradle会自动重建项目。


1
完整的app/build.gradle文件中,minSdkVersion和targetSdkVersion。
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "com.yourapp.package"
    minSdkVersion 18
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

packagingOptions {
    exclude 'LICENSE.txt'
}
}

dependencies {
androidTestCompile fileTree(dir: 'libs', include: '*.jar')
androidTestCompile('com.squareup.assertj:assertj-android:1.0.0'){
    exclude group: 'com.android.support', module:'support-annotations'
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接