【问题标题】:Can I use the latest version of the appcompat library with a project that is targeting sdk 21我可以在针对 sdk 21 的项目中使用最新版本的 appcompat 库吗
【发布时间】:2016-04-10 01:15:29
【问题描述】:

我对这个 appcompat 库了解不多,如果这不是最聪明的问题,我深表歉意。

我有一个项目遇到问题。原来我将 targetSdkVersion 设置为 23,这给我带来了问题,因为我想使用 21。所以我将其更改为 21。

在我的 build.gradle 中,我编译了 com.android.support:appcompat-v7:23.1.1。

当我尝试构建时,这会导致以下问题:

C:\Users\Conor\Documents\Programming\AndroidStudioProjects\AndroidStudioProjects\RouteTracker\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.1.1\res\values-v23\值-v23.xml

错误:(2) 检索项目的父项时出错:未找到与给定名称“android:TextAppearance.Material.Widget.Button.Inverse”匹配的资源。

错误:(2) 检索项目的父项时出错:找不到与给定名称“android:Widget.Material.Button.Colored”匹配的资源。 错误:任务 ':app:processDebugResources' 执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Conor\AppData\Local\Android\sdk\build-tools\21.0. 0\aapt.exe'' 以非零退出结束

所以我尝试使用 com.android.support:appcompat-v7:21.1.0 的 appcompat(因为它是我唯一能明确找到的),但它也不起作用。说找不到,让我用最新版本,23.1.1。

那么我应该使用 23.1.1 吗?如果是这样,您知道这些错误是关于什么的吗?

【问题讨论】:

    标签: android gradle android-support-library android-appcompat


    【解决方案1】:

    您已经获得了解决方案,但您的问题“我可以将最新版本的 appcompat 库用于面向 sdk 21 的项目”的答案如下。项目库应该与“compileSdkVersion”兼容,不一定与 targetSdkVersion 兼容。理想情况下,您的 compileSdkVersion 和 targetSdkVersion 应该是相同的,但如果您的要求是针对较低的 targetSdkVersion,那么您可以将其保持在低于 compileSdkVersion 的水平。

    【讨论】:

      【解决方案2】:

      错误:(2) 检索项目的父项时出错:未找到与给定名称“android:TextAppearance.Material.Widget.Button.Inverse”匹配的资源。

      发生这种情况是因为您使用的是支持库 v23,这些库需要使用 API 23 编译

      更改您的build.gradle 这一行:

      compileSdkVersion 23
      

      您可以使用其他版本的支持库,但是:

      • 注意有另一个使用最新版本的依赖项
      • 21.1.0 不存在
      • 使用正确的api编译

      这里是完整列表:

        //it requires compileSdkVersion 23
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:appcompat-v7:23.1.0'
        compile 'com.android.support:appcompat-v7:23.0.1'
        compile 'com.android.support:appcompat-v7:23.0.0'
      
        //it requires compileSdkVersion 22
        compile 'com.android.support:appcompat-v7:22.2.1'
        compile 'com.android.support:appcompat-v7:22.2.0'
        compile 'com.android.support:appcompat-v7:22.1.1'
        compile 'com.android.support:appcompat-v7:22.1.0'
        compile 'com.android.support:appcompat-v7:22.0.0'
      
        //it requires compileSdkVersion 21
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile 'com.android.support:appcompat-v7:21.0.2'
        compile 'com.android.support:appcompat-v7:21.0.0'
      

      【讨论】:

      • 干杯。你能告诉我你从哪里弄来的吗,我昨晚去找了,没找到。
      • @discodowney 您只需要更新您的 sdk 管理器。更新支持库存储库,您的机器中有所有这些版本。只需在 build.gradle 文件中添加正确的依赖项即可。
      • 是的,我知道,但我只是对实际版本感到好奇。 22.0.0、22.1.0。实际版本列表。我意识到这并不重要,但我只是好奇
      • 我不确定你的问题。这里是官方完整列表:developer.android.com/tools/support-library/index.html
      • 这正是我想要的。谢谢。
      【解决方案3】:

      没有。 AppCompat 最新更新删除了一些旧的依赖项。这仅适用于 v23。因此,您必须使用 targetSdkVersion 23.(marshmallow) 更新您的代码。

      【讨论】:

      • this blog post 中所述,您可以使用比您的目标更旧的 SDK 进行编译
      猜你喜欢
      • 2017-01-11
      • 1970-01-01
      • 2019-11-26
      • 2023-03-03
      • 2013-08-07
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多