gpt4 book ai didi

android - 在 Android Studio build.gradle 中从 Manifest 获取应用程序版本

转载 作者:行者123 更新时间:2023-11-29 20:55:11 27 4
gpt4 key购买 nike

有没有办法在使用 Android Studio 构建期间访问当前应用程序版本?我正在尝试将构建版本字符串包含在 apk 的文件名中。

我正在使用以下内容根据每晚构建的日期更改文件名,但我想为包含版本名称的发布构建提供另一种风格。

productFlavors {

nightly {
signingConfig signingConfigs.debug
applicationVariants.all { variant ->
variant.outputs.each { output ->
def file = output.outputFile
def date = new Date();
def formattedDate = date.format('yyyy-MM-dd')
output.outputFile = new File(
file.parent,
"App-nightly-" + formattedDate + ".apk"
)
}
}
}

}

最佳答案

通过https://stackoverflow.com/a/19406109/1139908 ,如果您没有在 Gradle 中定义版本号,您可以使用 list 解析器访问它们:

   import com.android.builder.core.DefaultManifestParser // At the top of build.gradle

def manifestParser = new com.android.builder.core.DefaultManifestParser()
String versionName = manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)

另外值得注意的是(根据 https://stackoverflow.com/a/22126638/1139908 )使用 applicationVariants.all 可能会对您的默认调试版本产生意外行为。在我的最终解决方案中,我的 buildTypes 部分如下所示:

buildTypes {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def String fileName;
if(variant.name == android.buildTypes.release.name) {
def manifestParser = new DefaultManifestParser()
def String versionName = manifestParser.getVersionName((File) android.sourceSets.main.manifest.srcFile)
fileName = "App-release-v${versionName}.apk"
} else { //etc }
def File file = output.outputFile
output.outputFile = new File(
file.parent,
fileName
)
}
}

release {
//etc
}
}

关于android - 在 Android Studio build.gradle 中从 Manifest 获取应用程序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969060/

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