【问题标题】:Gradle not picking right appcompat-v7:22.2.1Gradle 没有选择正确的 appcompat-v7:22.2.1
【发布时间】:2016-01-28 14:01:18
【问题描述】:

我遇到了一个奇怪的问题,我安装了最新的 appcompat-v7:23.0.0 据我所知,我一定不需要它,但我需要使用 appcompat-v7:22.2.1 或 appcompat-v7:22.0.0

我根据需要更新了我的 gradle,但它总是获取 appcompat-v7:23.0.0 这不是必需的,任何人指导我如何解决这个问题?

【问题讨论】:

  • 设置 buildToolsVersion 22.2.1 。让我反馈一下。
  • 为什么 com.google.android.gms:play-services+ ?尝试使用具有特定版本的文档。:compile 'com.google.android.gms:play-services:8.4.0' -> developers.google.com/android/guides/setup 我没有看到+ 是否可用,很奇怪。第一个图像的错误来自 23 api,你没有将它设置为我猜的依赖项。
  • 非常感谢您的帮助,我的 android studio 1.2.0 太旧了,现在我更新到 2.0,这些问题都解决了,它也会帮助其他人。

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


【解决方案1】:

因为你正在使用

compile 'com.google.android.gms:play-services:+'

您使用的是最新版本 compile 'com.google.android.gms:play-services:8.4.0',它与支持库 v23 有依赖关系。

您必须使用 API 23 进行编译。

改变这一行:

 compileSdkVersion 23

如果您不想使用 api23,可以使用特定版本,例如 as

compile 'com.google.android.gms:play-services:7.8.0' 

一般而言,在您的依赖项中使用 + 不是一个好习惯,因为您以后无法使用相同的库复制构建,而且您不知道您使用的是哪个版本正在使用。

另外您可以将 api23 与 Httpclient 一起使用
只需使用:

android {
    useLibrary 'org.apache.http.legacy'
}

更多info here.

useLibrary 需要 gradle 插件 1.3.0 (classpath 'com.android.tools.build:gradle:1.3.0') 或更高版本。

【讨论】:

  • 使用 useLibrary 'org.apache.http.legacy' 后出现以下错误: Gradle dsl method not found (uselibrary)
  • @UMAR 您使用的是哪个版本的 gradle 插件?它需要 1.3.0 或更高版本。例如:类路径'com.android.tools.build:gradle:1.3.1'
  • 最后一个错误,我完成了:添加旧版后,它解决了其余的 apache 导入相关问题,但无法解决 import org.apache.http.client.ClientProtocolException;导入 org.apache.http.client.entity.UrlEncodedFormEntity;导入 org.apache.http.client.methods.HttpPost;导入 org.apache.http.impl.client.DefaultHttpClient;
  • @UMAR 现在继续。
【解决方案2】:

AppCompat(又名 ActionBarCompat)最初是作为 适用于在 Gingerbread 上运行的设备的 Android 4.0 ActionBar API, 在反向移植的实现之上提供一个通用 API 层 和框架实现。 AppCompat v21 提供了一个 API 和 与 Android 5.0 保持同步的功能集

你可以使用

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

终于

android {
compileSdkVersion 22
buildToolsVersion '22.0.1' // You can set  buildToolsVersion '23.0.1' 

建议

你应该使用

compile 'com.google.android.gms:play-services:7.8.0' // or 8.4.0

Good Approach : 使用最新版本

您需要从内部 SDK 下载最新的支持库 Android Studio 的管理器或独立的 SDK 管理器。然后 你可以添加 compile 'com.android.support:appcompat-v7:23.0.1'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId ""
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

dependencies {

    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.google.android.gms:play-services:7.8.0' // or 8.4.0
}

编辑

你可以使用这个类路径

classpath 'com.android.tools.build:gradle:1.3.0'

然后Clean-Rebuild-Restart-Sync你的项目。希望这会有所帮助。

【讨论】:

  • 我不想使用 23 appcompat,因为我正在使用 apache httpclient 等。而且它们不支持,这就是为什么我需要坚持使用 22
猜你喜欢
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
相关资源
最近更新 更多