2017-06-12 60 views
0

我在Android gradle文件中看到了这些术语,它很混乱,我在创建即时应用程序时看到了这些术语。有人能解释这些术语的使用:这些gradle条款的用途是什么?

  1. api "com.android.support:appcompat-v7:$rootProject.supportLib"
  2. feature project(':main')
  3. application project(':installed')
  4. implementation project(":base")
  5. compile project(":base")

回答

0

我认为,所有上市词出现在一个dependencies块。像名称所示,项目依赖项在此块中定义。

该块为每个注册的配置提供了一种方法。这些方法是所列术语的第一部分(apifeature ...)。例如,您可以将第一项写为:

api("com.android.support:appcompat-v7:$rootProject.supportLib") 

Gradle基于的Groovy允许省略不必要的括号。

必须在configurations块或Gradle插件中定义不同的配置。 compile配置由Java Plugin,apiimplementationJava Library Plugin定义。就个人而言,我不知道插件,它定义了featureapplication配置。不同的配置就可以解决不同的用途,作为一个例子,这里是apiimplementation之间的差:

api配置应被用于声明其由库API导出的依赖关系,而implementation配置应用于声明组件内部的依赖关系。

您的术语的第二部分是定义为here的依赖性定义。第一个术语定义了对外部模块的依赖(在Maven仓库中),所有其他术语定义了多项目构建中其他Gradle项目的依赖关系。

第一学期还有一个特殊的Groovy功能。 Groovy区分常规String(通过'my string'定义)和GString(通过"my string"定义)。 GStrings允许您通过"my string with $expression"在字符串内部使用和评估Groovy表达式。在此术语中,评估rootProject.supportLib以定义外部模块依赖项的版本。作为替代,您可以使用地图符号而不是字符串符号来表示依赖项:

api group: 'com.android.support', name: 'appcompat-v7', version: rootProject.supportLib