gpt4 book ai didi

android - 从其他 gradle 脚本调用方法

转载 作者:行者123 更新时间:2023-11-30 01:05:00 26 4
gpt4 key购买 nike

我想要在 build.gradle 之外生成内部版本号和版本的方法。我创建了 build-versioning.gradle:

def getNewBuildCode = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', 'HEAD', '--count'
standardOutput = stdout
}
def version = stdout.toString().trim().toInteger()
println("versionCode: $version")
return version
}

def getVersionNameFromTag = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}

然后我通过以下方式在 build.gradle 中应用它:

apply from: '../../signing.gradle'

并在 defaultConfig 中使用:

versionName getVersionNameFromTag()

我正在接受:

Error:Could not find method getVersionNameFromTag() for arguments [] on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=DefaultApiVersion{mApiLevel=17, mCodename='null'}, targetSdkVersion=DefaultApiVersion{mApiLevel=24, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=157, versionName=null, applicationId=ae.propertyfinder, testApplicationId=null, testInstrumentationRunner=android.support.test.runner.AndroidJUnitRunner, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.ProductFlavor. 

getNewBuildCode 同理。如何解决?

最佳答案

def 表示局部函数/变量,因此您必须导出它们。这可以通过 ext 属性来完成。在这里找到更多相关信息:https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:local_variables

ext.getNewBuildCode = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', 'HEAD', '--count'
standardOutput = stdout
}
def version = stdout.toString().trim().toInteger()
println("versionCode: $version")
return version
}

ext.getVersionNameFromTag = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}

关于android - 从其他 gradle 脚本调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38949494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com