【问题标题】:Android - changing compileSdkVersion to 16 leads to compilation errors (gradle)Android - 将 compileSdkVersion 更改为 16 会导致编译错误(gradle)
【发布时间】:2015-08-29 19:10:55
【问题描述】:

刚刚在 Studio 中创建了一个新的 Android 应用,我将 compileSdkVersion 和 minSdkVersion 设置为 16,因为我想确保我不会意外使用更高版本的 Android 中的任何功能。

但是,我的 build.gradle 中的这一行在更改这些后似乎会导致编译错误:

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

当我注释掉它时,编译就会成功。我不需要这条线吗?我认为对于ActionBar等来说是必要的。

我是否有错误的想法首先将 compileSdkVersion 更改为 16 以确保我不使用新功能?

【问题讨论】:

  • 我收到大量类似这样的错误:错误:(2) 检索项目的父项时出错:未找到与给定名称“android:TextAppearance.Material.Inverse”匹配的资源。错误:(123, 21) 找不到与给定名称匹配的资源:attr 'android:colorPrimaryDark'。
  • 你必须使用API​​23编译。您不能使用 API16。 stackoverflow.com/questions/32102553/…

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


【解决方案1】:

我相信你想支持 sdk 版本 16+,为此,只需将 minSdkVersion 设置为 16 并使用最新的 compileSdkVersion,即 23

这样做,如果您使用版本 17+ 中引入的新功能,则会在编译或在 Android Studio 中编辑代码时显示错误/警告。

编辑:更多细节

你应该这样做的原因之一,因为你可以在你的代码中有这样的东西:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
}

其实这也是支持库的工作方式。

http://developer.android.com/training/basics/supporting-devices/platforms.html

【讨论】:

    【解决方案2】:

    但是,我的 build.gradle 中的这一行在更改这些后似乎会导致编译错误: 编译'com.android.support:appcompat-v7:23.0.0'

    这是因为支持库 v23 需要 API23 来编译项目。

    在您的build.gradle 中将compileSdkVersion 更改为23

      compileSdkVersion 23
    

    当我注释掉它时,编译就会成功。我不需要这条线吗?我认为对于ActionBar等来说是必要的。

    使用 minsdk=16 我建议您使用 appcompat 库。像 Toolbar 这样的 Widget,以及所有的 design support library(CollapsingToolbar、Snackbar...)都需要 appCompat。

    另外,如果你想在 api16 中反向移植材料设计,你需要它。

    【讨论】:

      【解决方案3】:

      如果您想使用最新版本进行编译,而不是将您的 SDK 更新并安装到最新版本,此时 API 23。

      如果您真的想在 API 16 上编译并提供对您的应用程序的支持并且不想添加对更高版本的支持(这对我来说没有意义可能对您有好处),那么根据您的声明

      我将 compileSdkVersion 和 minSdkVersion 设置为 16,因为我想 确保我不使用更高版本的 Android 中的任何功能

      然后设置 compileSdkVersion 为 16,minSdkVersion 为 16,targetSdkVersion 为 16

      & 依赖为编译 'com.android.support:appcompat-v6:16.0.0'

      检查 SDK 中的 API 16 部分。它应该安装

      而你的build.gradle应该是这样的

      apply plugin: 'com.android.application'
      
      android {
          compileSdkVersion 16
          buildToolsVersion "16.0.0"
      
          defaultConfig {
              applicationId "com.example.inzi.mapofcontacts"
              minSdkVersion 16
              targetSdkVersion 16
              versionCode 1
              versionName "1.0"
          }
          buildTypes {
              release {
                  minifyEnabled false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
      }
      
      dependencies {
          compile fileTree(dir: 'libs', include: ['*.jar'])
          compile 'com.android.support:appcompat-v6:16.0.0'
      }
      

      根据您的问题,它可能会对您有所帮助。

      【讨论】:

        【解决方案4】:

        您应该将您的 Android SDK 平台更新到最新的 Android 6.0 API 23。

        我遇到了同样的问题,因为我刚刚从 SDK 管理器更新了支持库,并没有更新 SDK 平台。


        (来源:techentice.com



        或者 'com.android.support:appcompat-v7:22.2.1' 而不是下载 SDK 平台

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-17
          • 1970-01-01
          • 2014-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-06
          • 1970-01-01
          相关资源
          最近更新 更多