如何在Android Studio中添加Android支持库?

44

我正在使用带有外部Android SDK的Android Studio。我已经安装了支持库和支持存储库。支持存储库位于:

~/Development/Tools/android/sdk/extras/android/m2repository

当我在build.gradle文件中添加一个支持库的依赖项时,例如:

...

repositories {
    mavenCentral()
}

...

dependencies {
   compile "com.android.support:support-v4:18.0.+"
}

Android Studio无法找到支持库(无法解析符号等),Gradle也无法找到这些库:

Gradle: A problem occurred configuring project ':TestAndroidStudio'.
> Failed to notify project evaluation listener.
   > Could not resolve all dependencies for configuration ':TestAndroidStudio:_DebugCompile'.
      > Could not find any version that matches com.android.support:support-v4:18.0.+.
        Required by:
            TestAndroidStudio:TestAndroidStudio:unspecified

我应该如何在Android Studio和/或build.gradle文件中指定Android支持库的位置?


local.properties 文件中,SDK 路径是否正确? - rciovati
我的 local.properties 文件中唯一的一行是:sdk.dir=/Users/jaap/Development/Tools/android/sdk,这是指向外部SDK的路径。 - Jaap van Hengstum
你确定你有支持库版本18吗?现在已经是19了。 - rciovati
任何因未在 build.gradle 中添加 'compile' 语句而到达此处的人,请注意有两个 build.gradle 文件,必须将 compile 添加到没有 dependencies 部分的文件的依赖项部分(即具有 targetSdkVersion = x 等的文件)。 - Lorne K
6个回答

28

你可能遇到了这个问题,它会阻止Android Gradle插件自动将"Android Support Repository"添加到Gradle仓库列表中。如在错误报告中提到的那样,解决方法是在顶层build.gradle文件中显式地将m2repository目录作为本地Maven目录添加如下:

allprojects {
    repositories {
        // Work around https://code.google.com/p/android/issues/detail?id=69270.
        def androidHome = System.getenv("ANDROID_HOME")
        maven {
            url "$androidHome/extras/android/m2repository/"
        }
    }
}

我正在将库添加到我们本地的Maven存储库,以便每个人都可以使用它。 - philipp
1
不再需要这样做了,因为至少我无法再使用最新的Android插件和构建工具重现该错误(请参见我的原始错误评论)。 - sschuberth
这解决了另一个问题:将 Android 注释支持(例如 @NonNull)添加到裸的 Android 应用程序 Java 库中。 - DenisGL
升级到Android Studio 2.3后仍然存在这个问题...是否有任何信息说明原因以及Android Studio中钩子机制的工作方式?!我唯一能确认的是:通过SDK管理器简单地“卸载然后重新安装”支持库,我可以“修复”它...即使现有文件已经存在并且重新安装,但为什么这样做会有帮助我也不知道。 - childno͡.de

26

Gradle可以使用18.0.+的标记,但现在取决于新的支持库,该库已经捆绑到SDK中。

打开SDK管理器,在“额外”的选项下,第一个选项是“Android支持库”,并安装它。


1
请确保你的“Android SDK 工具”已更新,并考虑使用“19.0.+”作为最新版本。 - Michael Barany
此文档和许多其他地方,developer.android警告不要在版本号中使用+号。 - AaA

11

找到了解决方案。

1)前往Android Studio / Eclipse使用的SDK位置。 如果你使用的是Android Studio,请前往extras\android\m2repository\com\android\support\。 如果你使用的是Eclipse,请前往\extras\android\support\

2)查看你有哪些文件夹,对我来说,我有gridlayout-v7、support-v4和support-v13。

3)点击进入support-v4,查看下一个文件夹的编号,我的命名为13.0。

由于你正在使用“com.android.support:support-v4:18.0.+”,所以请将其更改为反映你拥有的版本,例如我拥有support-v4,因此第一个部分v4保持不变。由于下一个路径是13.0,所以将你的18.0更改为:

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

这个方法对我有用,希望能帮到你们!

更新:

我注意到我之前安装的 Android Studio 设置了错误的 SDK,这就是为什么我一开始难以进行更新的原因!正确的路径应该是 C:\Users\Username\AppData\Local\Android\android-sdk\extras\

另外需要注意的是,如果你的 SDK 已经是最新版本,那么代码应该是:

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

谢谢。我也有点困惑,因为在在线的Maven仓库中,支持库位于com.google.android下,但在这里它位于com.android.support下。 - joe_deniable
我花了好几个小时才弄明白!结果只是一个简单的更改哈哈,很高兴你解决了! - escull638
我的 SDK 文件夾在 E 驅動器(C 為 SSD),而 [SDK]\extras\android\m2repository\com\android\support\support-v4 包含從 13.0.026.0.0-alpha1 的文件夾號碼(共 38 個文件夾),存儲庫仍然無法訪問。 - AaA
开发者.android已经在此文档中警告不要在版本号中使用+。 - AaA

4

Android Studio 3

请确保您安装了最新版本的Android Studio。支持库在创建新项目时默认包含在内。如果您要将支持库添加到尚未拥有它的项目中,则只需在应用程序模块的build.gradle文件中添加一行代码,然后同步gradle即可。

build.gradle

dependencies {
    ...
    implementation 'com.android.support:appcompat-v7:27.1.1'
} 

虽然可能需要注意一些事项,但这应该很容易:

  • Android Studio现在会警告你是否需要更新支持库。只需将此处的数字27.1.1更新为它告诉你的即可。如果您想了解更多信息,也可以手动检查最新版本号
  • implementation关键字替换了在Android Studio 2.x中使用的compile。(有什么区别?
  • 根据您的应用程序使用情况(例如constraint-layoutrecyclerview),您可能需要包含其他支持库包。
  • 确保您拥有SDK管理器中所有内容的最新更新。前往工具 > SDK管理器.

文档


2

我曾经遇到过类似的问题。即使安装了支持库,构建仍然会失败。

基本上,问题是由于gradle文件中jar文件版本号的指定方式不正确导致的。

例如,在我的情况下,我将其设置为“compile 'com.android.support:support-v4:21.0.3+'”

去掉“+”后,构建成功了!


developer.android已经在此文档中警告不要在版本号中使用+号。链接 - AaA

-1

不要这样做:

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

做这个:
compile 'com.android.support:support-v4:18.0.+' 

对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接