Android Studio3.0中dependencies依赖由compile变为implementation的区别

介绍Android Studio 3.0中依赖管理的变化,包括从compile到implementation和api的区别,以及不同依赖类型如compileOnly、runtimeOnly的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Android Studio版本更新至3.0了,更新后,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加令人兴奋的是完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。

一、依赖变化

当我们使用Android Studio3.0新建项目时会发现,默认的依赖由之前的compile更改为implementation了。

3.0 以下版本build.gradle中依赖的写法:

compile fileTree(dir: 'libs', include: ['*.jar'])

但在3.0后的写法为

implementation fileTree(dir: 'libs', include: ['*.jar'])
或
api fileTree(dir: 'libs', include: ['*.jar'])

二、区别

在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implementation和api,这两个都可以进行依赖添加,但是有什么区别呢?

api

完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。

implementation

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。

举个例子:

比如我在一个libiary中使用implementation依赖了gson库,然后我的主项目依赖了libiary,那么,我的主项目就无法访问gson库中的方法。这样的好处是编译速度会加快,推荐使用implementation的方式去依赖,如果你需要提供给外部访问,那么就使用api依赖即可

在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implementation的,如果没有错,那就用implementation,如果有错,那么使用api指令,这样会使编译速度增快。

三、说明

下面是2.x版本依赖的说明,括号里对应的是3.0版本的依赖方式。

compile(api)

这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。

provided(compileOnly)

只在编译时有效,不会参与打包,可以在自己的moudle中使用该方式依赖。比如com.android.support,gson这些使用者常用的库,避免冲突。

apk(runtimeOnly)

只在生成apk的时候参与打包,编译时不会参与,很少用。

testCompile(testImplementation)

testCompile 只在单元测试代码的编译以及最终打包测试apk时有效。

debugCompile(debugImplementation)

debugCompile 只在debug模式的编译和最终的debug apk打包时有效。

releaseCompile(releaseImplementation)

releaseCompile 仅仅针对Release模式的编译和最终的Release apk打包。

<think>我们参考多个引用,综合给出添加RecyclerView依赖的方法。引用[1]提到在build.gradle(Module)的dependencies闭包中添加:compile&#39;com.android.support:recyclerview-v7:26.+&#39;但引用[2]指出使用这种依赖可能导致问题(cannotresolvesymbol&#39;R&#39;),并建议删除。引用[3]和引用[5]提到新版本AndroidStudio使用AndroidX,应使用androidx.recyclerview:recyclerview引用[4]展示了通过ProjectStructure界面添加依赖的方法,但同样可能因为版本问题需要调整。目前最佳实践:根据项目使用的库(AndroidSupport库还是AndroidX)选择依赖项。由于Android官方已经推荐使用AndroidX,因此建议使用AndroidX的依赖。方法一(通过build.gradle文件手动添加):1.打开项目的build.gradle(Module:app)文件(通常位于app/build.gradle)2.dependencies闭包中添加:implementation&#39;androidx.recyclerview:recyclerview:1.2.1&#39;//使用最新稳定版本,此处1.2.1为示例方法二(通过ProjectStructure界面添加):1.右键单击项目,选择“OpenModuleSettings”(或者通过File->ProjectStructure)2.在左侧选择要添加依赖的模块(通常是app)3.选择Dependencies选项卡,点击右上角的“+”号4.选择“LibraryDependency”5.在搜索框中输入“recyclerview”6.选择“androidx.recyclerview:recyclerview”7.选择版本(建议选择最新稳定版)8.点击OK,然后同步项目重要提示:1.如果项目中使用了AndroidSupport库,需要迁移到AndroidX(官方推荐)或者继续使用v7包。-若使用v7包(旧项目),则添加:implementation&#39;com.android.support:recyclerview-v7:28.0.0&#39;(注意版本号,避免使用26.+这种动态版本)-但请注意,引用[2]提到使用动态版本(如28.0.0-alpha1)可能会导致问题,所以建议使用稳定版本。2.添加依赖后,需要点击SyncNow同步项目。3.如果出现错误,请检查compileSdkVersion和buildToolsVersion是否与依赖库版本兼容(引用[5]提到版本不能超过28,但现在AndroidX的版本已经更新,所以应使用与compileSdkVersion匹配的依赖版本)例如,compileSdkVersion为30,则可以使用较新版本的RecyclerView(如1.2.1)。最新建议:使用AndroidX依赖,并确保项目的compileSdkVersion在30以上(如果可能),并使用最新稳定版的RecyclerView。具体步骤(针对新项目,使用AndroidX):步骤1:在app/build.gradle文件中,确保已经启用了AndroidX(一般情况下新建项目默认启用)。在gradle.properties文件中检查是否有:android.useAndroidX=trueandroid.enableJetifier=true步骤2:在app/build.gradledependencies块中添加:implementation&#39;androidx.recyclerview:recyclerview:1.3.2&#39;//截至2023年,1.3.2是稳定版本,请根据最新情况调整步骤3:点击同步按钮(SyncNow)如果同步失败,请检查网络,或者版本是否可用。步骤4:在布局文件中使用RecyclerView,全名为:androidx.recyclerview.widget.RecyclerView注意事项:如果从旧项目迁移,可能需要将布局文件中的完整类名从com.android.support改为androidx。相关问题:1.如何区分项目使用的是AndroidSupport库还是AndroidX?2.添加依赖后出现“Cannotresolvesymbol”错误怎么办?3.RecyclerView有哪些常用的布局管理器和适配器?4.如何将使用Support库的项目迁移到AndroidX?5.如何更新RecyclerView到最新版本?</think> 在 Android Studio 中添加 RecyclerView 依赖的正确方法主要取决于项目的支持库版本和 Gradle 配置。以下是两种主流方法,综合了多个引用源的最佳实践: --- ### **方法一:手动添加依赖(推荐)** 1. **打开模块级 build.gradle 文件** - 路径:`app > build.gradle (Module: app)` 2. **在 `dependencies` 闭包中添加依赖** ```gradle dependencies { // 使用 AndroidX(新项目推荐) implementation &#39;androidx.recyclerview:recyclerview:1.3.2&#39; // 使用最新稳定版 // 或旧版 Support 库(仅限未迁移到 AndroidX 的项目) // implementation &#39;com.android.support:recyclerview-v7:28.0.0&#39; } ``` 3. **同步 Gradle** - 点击右上角 **Sync Now**(大象图标) > **关键细节**(参考引用[1][3][5]): > - **版本兼容性**:确保 `compileSdkVersion` 和依赖版本匹配(例如 `compileSdkVersion 30` 需用 AndroidX)。 > - **避免动态版本**:如 `26.+` 或 `28.0.0-alpha1`(易导致冲突,引用[2][5])。 > - AndroidX 包名:`androidx.recyclerview`(新项目默认),Support 库包名:`com.android.support`。 --- ### **方法二:通过图形界面添加** 1. **打开 Project Structure** - 右键项目 → **Open Module Settings**(或 **File > Project Structure**)引用[4]。 2. **添加依赖** - 选择 **App > Dependencies** → 点击 **+** → **Library Dependency**。 3. **搜索依赖** - 输入 `recyclerview` → 选择 `androidx.recyclerview:recyclerview` → 点击 **OK** 引用[3][4]。 --- ### **常见问题解决** 1. **Cannot resolve symbol &#39;R&#39;** - 清理项目:**Build > Clean Project** → **Rebuild Project**。 - 检查依赖版本冲突(引用[2]),避免使用 `alpha` 版本或版本号不匹配。 2. **依赖同步失败** - 更新 `buildToolsVersion` 和 `compileSdkVersion` 至最新稳定版(引用[5])。 - 在 `gradle.properties` 中添加: ```properties android.useAndroidX=true android.enableJetifier=true # 自动转换旧依赖 ``` 3. **布局文件中使用** ```xml <androidx.recyclerview.widget.RecyclerView <!-- AndroidX --> <!-- 或旧版 --> <android.support.v7.widget.RecyclerView ``` --- ### **选择依赖的建议** | **场景** | **推荐依赖** | 注意事项 | |------------------------|------------------------------------------|----------------------------| | 新项目(AndroidX) | `implementation &#39;androidx.recyclerview:recyclerview:1.3.2&#39;` | 默认选项,兼容性好 | | 旧项目(未迁移 AndroidX) | `implementation &#39;com.android.support:recyclerview-v7:28.0.0&#39;` | 需与 `support` 库版本一致 | > **提示**:官方已停止更新 Support 库,建议新项目优先使用 AndroidX。 --- **相关问题** 1. 如何判断项目是否使用了 AndroidX? 2. 添加 RecyclerView 后如何解决 `ClassNotFoundException` 错误? 3. RecyclerView 与 ListView 的主要区别是什么? 4. 如何为 RecyclerView 实现点击事件? 5. 依赖冲突(如 `Duplicate class`)如何解决? [^1][^3][^4][^5]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值