android的这些gradle术语有什么用?

时间:2017-06-12 10:55:02

标签: android android-studio gradle

我在android 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")

1 个答案:

答案 0 :(得分:0)

我假设所有列出的术语都出现在dependencies块中。与名称一样,项目依赖项在此块中定义。

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

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

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

必须在configurations块中或通过Gradle插件定义不同的配置。 compile配置由Java PluginapiimplementationJava Library Plugin定义。就个人而言,我不知道定义featureapplication配置的插件。可以针对不同用途解决不同的配置,例如,apiimplementation之间存在差异:

  

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

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

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

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