带时间戳的Android Gradle构build文件,运行昨天的版本

下面我有我的生成Gradle的文件。 问题。 它运行昨天的APK,而不是今天的。 根本原因。 我dynamic地将date放在apks名称中 – 用于debugging版本。

当我运行应用程序时,它会看到旧的APK,并看到它与Gradle预期的相匹配,因为Gradle没有刷新并注意到date更改。

我需要强制gradle刷新每一次运行。

buildTypes { debug { debuggable true minifyEnabled false proguardFiles 'proguard-rules.pro' applicationVariants.all { variant -> variant.outputs.each { output -> def formattedDate = new Date().format('yyyyMMdd') def newName = output.outputFile.name newName = newName.replace("app-", "myappname-") //"MyAppName" -> I set my app variables in the root project newName = newName.replace("-release", "-" + versionName + "-" + formattedDate + "-r") newName = newName.replace("-debug", "-" + versionName + "-" + formattedDate + "-d") output.outputFile = new File(output.outputFile.parent, newName) } } } } 

  • 如何将Action Bar Sherlock导入gradle项目?
  • IllegalArgumentException:已经添加:Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl;
  • Gradle版本2.10是必需的。 当前版本是2.8错误
  • android studio gradle服务器configuration
  • 在gradle中设置一个可以在清单文件中使用的全局variables
  • Gradle 14.4无法构建 - 未findGradle DSL方法'packageName()'
  • 编译AIDL时出错
  • 为什么Android Studio项目中有两个build.gradle文件?
  • 命令行选项

    即使其他一些选项可能会起作用,你尝试过吗?

     --recompile-scripts 

    强制脚本重新编译,绕过caching。

    命令行选项 ? 另一种select是--rerun-tasks ,但这可能是矫枉过正的。

    代码选项: upToDateWhen

    看看重置Gradle任务的UP-TO-DATE属性? 。 设置upToDateWhen {false}可能会做的伎俩。 尝试以下方法:

      applicationVariants.all { variant -> variant.outputs.upToDateWhen {false} variant.setOnlyIf { true } variant.outputs.each { output -> def formattedDate = new Date().format('yyyyMMdd') def newName = output.outputFile.name newName = newName.replace("app-", "myappname-") //"MyAppName" -> I set my app variables in the root project newName = newName.replace("-release", "-" + versionName + "-" + formattedDate + "-r") newName = newName.replace("-debug", "-" + versionName + "-" + formattedDate + "-d") output.outputFile = new File(output.outputFile.parent, newName) } } 

    您可以创build这样的任务,例如,如果没有风味,则为每个风味和构buildtypes(installDebug,intallRelease),并运行它而不是默认的运行configuration。 但是,那么你应该手动附加到debugging,也许,你会有一些其他的问题。 也许有一些能力为每个flavor / buildtypes自动生成这些任务。

    脚本从这里: https : //stackoverflow.com/a/21992166/4069913

     task appStart(type: Exec, dependsOn: 'install$Flavor$Build') { // linux commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MainActivity' // windows // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MainActivity' }