![](/img/trans.png)
[英]Update Android Application version (stored in build.gradle) with gradle
[英]Get application version from Manifest in Android Studio build.gradle
使用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中定义版本号,则可以使用清单解析器访问它们:
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.