【发布时间】:2016-07-12 18:39:55
【问题描述】:
当我阅读 Android NDK 文档时,有“DSL”。我不知道具体是什么意思。请告诉我“DSL”的全名好吗?
在此处记录: http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples
【问题讨论】:
当我阅读 Android NDK 文档时,有“DSL”。我不知道具体是什么意思。请告诉我“DSL”的全名好吗?
在此处记录: http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples
【问题讨论】:
简单地说,它代表“领域特定语言”。 IMO,在 gradle 上下文中,DSL 为您提供了一种特定于 gradle 的方式来形成您的构建脚本。更准确地说,它是一个基于插件的构建系统,它定义了一种使用(主要)在各种插件中定义的构建块来设置构建脚本的方法。
例如,gradle 脚本通常依赖于使用将闭包作为唯一参数的方法(也称为构建块)。然后你就这样写下来;
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
...
defaultConfig {
minSdkVersion 19
targetSdkVersion 25
所以在上面,我们想使用 'android{ ...}' building block(或预定义的task - 请参阅 Example.89 @987654321 @) 为我们的构建设置一些 android 属性。但我不知道一开始我可以在里面放哪些积木。所以,我需要一种从某个地方查找这些内容的方法。这就是 gradle DSL 和插件一起发挥作用的地方。我可以去那个特定插件的page 找出其中定义了什么样的构建块,或者是什么让这个插件变得特别。这些将以称为(gradle)DSL 的高级语言的形式定义插件的功能。
了解 DSL 的工作方式可能需要您了解“委托”在 groovy 中的工作方式。 This 可能会有很大帮助。
您可能想知道的最后一件事是如何评估 gradle.script。您可以通过here找到一些有用的信息。
【讨论】:
它代表“域特定语言”,更多信息可以在on Wikipedia找到。
【讨论】:
Gradle 是一种构建工具,而不是一种语言。 但是在android中我们使用android gradle插件来获取语法,api用于在android中使用gradle。
例如
signingConfigs {
debug {
keyAlias 'cooldude69'
keyPassword 'cooldude69'
}
}
这里的 signingConfig 是 build.gradle 文件的一部分,它帮助 Gradle 构建工具指定此构建是具有某些 keyAlias 等的调试构建。
所以这些构建块、API 等是在 android 中使用 Gradle 的格式,因此称为 Gradle DSL(领域特定语言)。 也可以通俗的说使用Gradle构建工具是一种Gradle语言(基于groovy语言)。
参考->
https://developer.android.com/reference/tools/gradle-api/4.2/classes
https://developer.android.com/studio/build/gradle-tips#groovy
【讨论】: