我正在使用Android Studio和gradle构建脚本。当我要更改某些设置时,我需要iterate
一些字段。但我不清楚difference
和all
之间的each
。
例如我用google搜索一些代码来更改输出apk文件名。代码按applicationVariants
和all
variant.outputs
迭代each
:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, "MyApp.apk")
}
}
答案 0 :(得分:3)
DomainObjectCollection.all
的{{3}}说:“针对此集合中的所有对象,以及随后添加到此集合中的所有对象执行给定的闭包。”
答案 1 :(得分:2)
each
是一个简单的常规构造。它用于迭代给定对象,不会修改它(原始对象)并在完成后返回(未更改的)对象。参见:
assert [1, 2, 3] == [1, 2, 3].each { println it }
虽然all
是gradle本身添加的方法。因此,android
插件会添加this扩展名,其中包含getApplicationVariants
方法。由于groovy允许省略get
,因此可以使用applicationVariants
。现在,所提到的扩展使用this类来保留变体的集合,其扩展为 - this。在后一种all
方法中定义了,据我所知,只是批处理。