Android Studio - Can't specify own minSdkVersi

2019-02-22 11:54发布

After installing the Android L Developer Preview SDK earlier today I wanted to make my app compatible with both Android L and older versions such as Jelly Bean. My app uses a minSdkVersion of 16 but since I tried out the developer preview Android Studio doesn't seem to respect my minSdkVersion. I'm trying to get my app to run on my Galaxy Nexus (API 19) and here's the error I get:

enter image description here

Here's my AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.simon.holocountownapp"
    android:versionCode="45"
    android:versionName="4.1.1" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="L" />

...

Here's my build.gradle:

apply plugin: 'android'

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 'L'
    }
    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile 'com.doomonafireball.betterpickers:library:1.5.2'
    compile 'uk.co.androidalliance:edgeeffectoverride:1.0.1'
    compile 'com.readystatesoftware.systembartint:systembartint:+'
    compile "com.android.support:support-v4:+"
    compile "com.android.support:support-v13:+"
}

3条回答
2楼-- · 2019-02-22 12:13

See my post to /r/AndroidDev here that provides a workaround.

查看更多
男人必须洒脱
3楼-- · 2019-02-22 12:15

You are using this dependency:

compile "com.android.support:support-v4:+"

In this way you are using the support-v4 in L-preview (21-rc1).

This support lib is declaring minSdkVersion L (you can check the Manifest).

You have to force the minSdkVersion to be 'L' (check the doc: http://developer.android.com/preview/setup-sdk.html)

On the development environment, open the build.gradle file for your module and make sure that:

compileSdkVersion is set to 'android-L'
minSdkVersion is set to 'L'
targetSdkVersion is set to 'L'

It is not a bug, but this is because these APIs are not final. It is a way to prevent installing the apps on a final API 21 device or publishing it on the store using support lib 21-r1.

查看更多
聊天终结者
4楼-- · 2019-02-22 12:26

In developer documentation says (http://developer.android.com/preview/setup-sdk.html):

On the development environment, open the build.gradle file for your module and make sure that:

  • compileSdkVersion is set to 'android-L'
  • minSdkVersion is set to 'L'
  • targetSdkVersion is set to 'L'

It seems that can't be backward compatible (right now).

查看更多
登录 后发表回答