我有个身材。我的android应用程序中的gradle文件具有以下设置:
android {
...
defaultConfig {
applicationId "some.app.id"
versionName '1.2'
versionCode 3
...
}
...
}
My AndroidManifest.xml不包含版本代码,也不包含 versionName。
现在我想在Jenkins上构建这个应用程序,并将build_NUMBER作为应用程序的版本代码传递,以便每个构建都有更高的版本。
所以在工作中,我接到了一个电话:
./gradlew -PversionCode=$BUILD_NUMBER clean build
当我使用“versionCode”重命名“app release.apk”时,versionCode的值与从命令行传递的值相同:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "MyApp_" + "_v" + versionName + "." + versionCode + ".apk"))
}
}
总结
因此,我将“versionCode”的默认值设置为3,但在Jenkins上构建时,我想从命令行覆盖它。
问题所在
问题在于,在 AndroidManifest 内部构建.apk应用程序中,将版本代码设置为 3,而不是BUILD_NUMBER的值。我用“aapt dump badging”检查了它
问题
android defaultConfig中的值“versionCode”可以被命令行参数覆盖吗?
我知道,我可以使用以下解释的函数:http://robertomurray.co.uk/blog/2013/gradle-android-inject-version-code-from-command-line-parameter/ 但我更喜欢更简单的覆盖方式,但我无法让它工作。
您可以通过在 gradle.properties
文件中定义属性来使用属性,请参阅 gradle 文档。但是你必须非常小心你使用哪些名称来表示你的属性:如果你使用 versionName,则该属性在 gradle 中将具有正确的值(你可以打印它),
但它不会出现在你的 AndroidManifest 中.xml!所以我选择使用“versName”。(我对gradle的了解还不够多,无法理解为什么会这样...)
因此,在项目的<code>gradle中。属性您可以定义以下属性:versCode=3 versName=1.2
然后将build.gradle
文件更改为:
android {
...
defaultConfig {
applicationId "some.app.id"
versionName versName
versionCode versCode as Integer
...
}
...
}
现在,您可以在命令行中覆盖它们,如下所示:< code >。/grad Lew-pvers code = 4-pvers name = 2 . 1 . 3全新构建
问题内容: 我有一个带有默认变量值的application.properties文件。我希望能够在运行时更改其中之一。我找到了如何更改整个文件的方法,但是我只想更改其中一个或两个属性。 问题答案: 您可以将各个属性作为命令行参数传递。例如,如果要设置,则在启动可执行jar时可以执行以下操作: 另外,如果您使用的是Spring Boot 2.x,则: 或者,如果您使用的是Spring Boot 1.
问题内容: 我目前有量角器安装程序,可以在我们的集成服务器上运行。在protractor.conf.js文件中,我具有以下内容: 从命令行本地运行时,我想覆盖此设置。我尝试了以下失败的尝试 问题: 从命令行本地运行时,如何切换为仅使用chrome的单个实例? 问题答案: 这是个问题。 根据源代码,命令行参数是的别名。 根据文档: 换句话说,由于已指定,因此将被忽略。 您可以尝试从命令行重置: 作为
问题内容: 我有一个结构如下的文件: 我想在命令行中覆盖。 对于其他值为简单类型(字符串,数字)的配置键,我可以使用进行覆盖,并且效果很好。 但是,我似乎找不到为 list 做到这一点的方法。在上面的示例中,我尝试将其设置为如下所示:,但是我得到了一个例外,即键值是字符串,而不是列表。 有没有一种方法可以通知类型安全配置库此值是一个列表? 问题答案: 为此,在1.0.1版中实现了另一种语法:
问题内容: 在Django管理员中,我想覆盖并实现自己的模型形式(例如发票模型)。 我希望发票表单具有用于客户名称,产品名称的自动填写字段,并且我还想进行自定义验证(例如客户的信用额度)。如何覆盖Django管理员提供的默认格式并实现自己的默认格式? 问题答案: 如何根据docs在django admin中覆盖表单:
我从spring文档中找到了一些可以覆盖登录控制器和表单的东西。我只想重写登录表单本身,同时保留默认控制器。我发现了这个: 在grails security插件中,登录gsp页面位于grails-app/views/login/auth.gsp,控制器位于grails-app/controllers/grails/plugin/springsecurity/logincontroller.groo
我有一个pom文件,其中某些依赖项的版本号依赖于pom文件设置中指定的项目版本属性。我可以通过命令行覆盖它吗?如果可以,如何操作? 说来话长: 我们目前正在将我们的项目转换为maven,但我们还没有完全实现。有多个模块仍然没有使用maven构建,因此是我们项目中的依赖项(它们通过ant构建到jar中)。发布后,我们希望构建所有这些jar,并包含与父项目相同的版本号。对于发布,执行两个步骤(直到我们