android - gradle中compile,provided,compile files,compile project有何区别?

 sdx3418153 发布于 2022-11-03 17:20

在一个Android项目的build.gradle中,dependencies闭包中有以下四种形式的声明:

compile 'com.android.support:appcompat-v7:22.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
compile files('libs/picasso-2.4.0.jar')
compile project(':androidPullToRefresh')

我想彻底弄清compile、provided、compile files、compile project四者的区别。
我的理解:
compile所指编译内容可以是本地的,也可以是远程(jCenter)中的。如果是本地的包,最好以aar形式给出

provided 不懂

compile files编译的是jar包

compile project编译的内容必须包含多有java代码、xml布局文件、AndroidManifest等,而且还要在项目的setting.gradle中用include的形式声明引用

以上,求详解

3 个回答
  • 推荐去看看《gradle for android》

    2022-11-06 05:14 回答
  • 就如 @食用淡水鱼 所说。
    compile file、compile project、compile fileTree都可以看成是compile 的子命令,里面的类和资源会被打包到你使用的App中,而provided不会,但是在运行时还是需你另外提供。

    2022-11-06 05:15 回答
  • 1,3,4本质上是一样的,区别在于:

    1 是从repository(默认是jCenter())里下载一个依赖包进行编译并打包
    3 是从本地的libs目录下寻找picasso-2.4.0.jar这个文件进行编译并打包。类似的命令有`compile fileTree(dir: 'libs', include: '*.jar')`——将libs目录下所有jar文件进行编译并打包。
    4 是将另一个module(等同eclipse中的library)进行编译并打包
    

    至于provided,是提供给那些只编译不打包场景的命令。就是,我在编译的时候对某一个jar文件有依赖,但是最终打包apk文件时,我不想把这个jar文件放进去,可以用这个命令。目前我知道的就一个插件化的场景需要用到这个命令,如果搞不明白,可以先不管。

    2022-11-06 05:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有