43

Android Studio当我的项目有19 minSdkVersion.

此外,当设置mindSdkVersion如下:

defaultConfig {
....
          minSdkVersion 'L'
....
    }

关于以下资源,我收到了几十个错误AppCompat-v7-21

/home/user/workspace/project/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0-rc1/res/values-v21/values.xml
Error:Error retrieving parent for item: No resource found that matches the given name '@android:TextAppearance.Material.SearchResult.Subtitle'.

所以我有两个问题:

  1. 为什么 AS 抱怨 minSdkVersion ?我推测是因为 AppCompat-v7 21 只支持 L 版本;但为什么 ?还有,秋季正式发售的时候也只支持L版吗?因为这将是一个问题......或者它只是一个临时限制,以便应用程序不会被推送到 Play 商店,如 Google I/O 2014 主题演讲中所述?
  2. 为什么 AppCompat-v7 21 抱怨这些错误,因为我已经将 mindSdkVersion 设置为 L ?
4

6 回答 6

56
compileSdkVersion 'android-L'

繁荣。完毕。

最后编辑:从 Android 5.0 版本开始,这不再是问题,只需直接针对 API 级别 21。

为清楚起见进行编辑:确实正如下面指定的 David_E,此解决方案仅适用于 L 版本,如果您尝试在 L 以下的设备上部署应用程序(例如 <=4.4.4),它将抱怨 OLD_SDK。为了让应用程序在 L 之前工作,您仍然需要使用旧的 v20 支持 lib + app compat + targetVersionSdk 和 compileVersionSdk

dependencies {

        compile 'com.android.support:appcompat-v7:20.+'
        compile 'com.android.support:support-v4:20.+'
    }

    android {
        compileSdkVersion 20
        buildToolsVersion '20'

        defaultConfig {
            applicationId "com.example.application"
            minSdkVersion 10
            targetSdkVersion 20
            versionCode 1
            versionName "1.0"
        }
}
于 2014-06-26T18:11:55.243 回答
32

此处所述的答案可能无法正常工作,因为它会使您的应用仅适用于 Android L。

为了保持与旧 Android OS 版本的向后兼容性,请更改 gradle 依赖项

从:

compile 'com.android.support:appcompat-v7:+'

到:

compile 'com.android.support:appcompat-v7:20.+'

请注意,错误抱怨com.android.support:appcompat-v7:21.0.0-rc1,原因是 usingappcompat-v7:+会告诉 gradle 导入appcompat-v7库的最新依赖项,不幸的是,这个最新版本仅适用于 Android L,所以我们必须指向以前的版本。

希望谷歌能在不久的将来解决这个问题。

于 2014-06-26T21:48:57.837 回答
4

对我有用的方法是安装 Android Studio Beta(不是预览版,Beta 是今天作为 IO 的一部分推出的)。

卸载预览版并安装 Beta 并打开您的项目。它会要求您使用项目 SDK 或 Studio SDK,使用 Android Studio 的 SDK。

转到您的项目 local.properties 文件和 sdk.dir 的位置,确保所有反斜杠 () 加倍。例如 \。

转到项目结构 > SDK 并确保它指向我电脑上的 Android SDK,它是 C:\Program Files(x86)\Android\android-studio\SDK。

然后在您的项目和任何库中,您拥有 build.gradle 文件

compile 'com.android.support:support-v4 将其更改为 compile 'com.android.support:support-v4:20+

重新同步 gradle 文件并全部修复

于 2014-06-26T21:04:58.867 回答
4

强制使用工作版本只需像这样更改 gradle 依赖项:

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:appcompat-v7:19+'
    ...
}

曾是:

compile 'com.android.support:appcompat-v7:+'

注意

我在 SDK 管理器中更新了 Tools & Extras。

项目被破坏后,我如上所示修复了它。

现在我不更新 android L & 4.4W (今天的 bug 已经够多了 :-( )

于 2014-06-28T13:50:30.593 回答
2

感谢大卫的回答!

我不得不改变

compile 'com.android.support:support-v13:+'

到:

compile 'com.android.support:support-v13:20.+'

现在一切都很完美。

于 2014-07-16T09:50:50.563 回答
0

另外:这里的其他答案并没有为我解决问题,但我找到了另一种方法来解决 Android Studio 0.8.0 上的 android-l 问题。在我确实更改了 build.gradle 中的依赖项之后,可悲的是,问题一直在发生,代码会说 OLD_SKD。我正在使用 Galaxy S2。

除了将所有内容更改为:19+:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19+'
    compile 'com.android.support:support-v4:19+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:mediarouter-v7:19+'
}

它仍然行不通,所以我不得不尽可能地搬回去:

android {
    compileSdkVersion 19
    buildToolsVersion '19.1'
    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }

现在该应用程序再次在手机上运行。我可能应该买一部新手机,但现在,我希望这可能对某人有所帮助。

于 2014-06-27T16:40:53.510 回答