我在android gradle文件中看到过这些术语,而且我在创建即时应用程序时看到了这些术语。有人可以解释这些术语的用法:
api "com.android.support:appcompat-v7:$rootProject.supportLib"
feature project(':main')
application project(':installed')
implementation project(":base")
compile project(":base")
答案 0 :(得分:0)
我假设所有列出的术语都出现在dependencies
块中。与名称一样,项目依赖项在此块中定义。
该块为每个已注册的配置提供了一种方法。这些方法是列出的术语的第一部分(api
,feature
...)。例如,您可以将第一个术语写为:
api("com.android.support:appcompat-v7:$rootProject.supportLib")
Gradle基于的Groovy允许省略不必要的括号。
必须在configurations
块中或通过Gradle插件定义不同的配置。 compile
配置由Java Plugin,api
和implementation
由Java Library Plugin定义。就个人而言,我不知道定义feature
或application
配置的插件。可以针对不同用途解决不同的配置,例如,api
和implementation
之间存在差异:
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