android - 避免代码重复 - 如何在 gradle 中创建函数(并调用它们)?

标签 android function gradle build call

我一直在互联网上寻找几分钟关于如何创建函数并在 build.gradle 中调用它们但没有成功。由于我什么也没找到,所以我不确定我是否正在搜索正确的概念关键字,或者这是否可能。

我有两个buildTypes:

release {

}

debug {

}

我想在下面的两个函数中调用这个 snippet() 而不复制它,或者换句话说,创建一个函数:

def propsFile = rootProject.file('properties')
            def M_PROP = "mProp"

            if (propsFile.exists()) {
                //Math
            }

生成类似的东西:

buildTypes {
        release {
              snippet()
            }
        }

        debug {
              snippet()
        }
    }

这可能吗?我怎样才能做到这一点?

最佳答案

也许你想要

buildTypes {
   [release, debug].each { buildType ->
      if (foo) {
          buildType.doStuff()
      }
   }
}

或者也许

ext.snippet = { buildType -> 
    if (foo) {
       buildType.doStuff()
    }
}
buildTypes {
    snippet(release)
    snippet(debug)
}

注意:还有 with { ... } groovy 中的方法 so

buildType.doStuff1()
buildType.doStuff2()
buildType.doStuff3()

可以写成

buildType.with {
    doStuff1()
    doStuff2()
    doStuff3()
}

关于android - 避免代码重复 - 如何在 gradle 中创建函数(并调用它们)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320727/

相关文章:

java - 返回按钮 -> 模拟主页按钮

android - 自定义 View ,如 android 的锁定/解锁屏幕

android - 拒绝对先前失败的类com.google.android.gms.location.LocationService进行重新初始化

c++ - 输出随机数

android - 无法合并 Dex - Android Studio 3.0.1 DexArchiveMergerException

Android Gradle - 在特定的 productFlavor 上添加 packageNameSuffix

java - 写入文件的问题

android - 用于启动 Android 应用程序的 DIAL 协议(protocol)

c++ - 传递一个函数和一个整数的函数。警告 : passing argument of "" from incompatible pointer type

javascript - 如何为 JavaScript 创建的每个 DIV 制作不同的 insideText?