Intereting Posts

Файл сборки Android Gradle с функцией Time Stamp работает вчера

Ниже у меня есть файл сборки для Gradle. Issue. Он использует вчерашний APK вместо сегодняшнего. Основная причина. Я динамически помещаю дату в имя apks – для отладочных сборников.

Когда я запускаю приложение, он видит старый APK и видит, что он соответствует ожидаемому Gradle, поскольку Gradle не обновился и заметил изменение даты.

Мне нужно заставить 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) } } } } 

Solutions Collecting From Web of "Файл сборки Android Gradle с функцией Time Stamp работает вчера"

Параметры командной строки

Даже если некоторые другие варианты могут работать, попробовали ли вы

 --recompile-scripts 

Закрепляет скрипты, которые необходимо перекомпилировать, минуя кеширование.

Вариант командной строки ? Другой альтернативой было бы --rerun-tasks , но это может быть излишним.

Опция кода: upToDateWhen

Посмотрите на Сброс свойства 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) } } 

Вы можете создать такую ​​задачу, например, для каждого типа аромата и типа сборки (installDebug, intallRelease), если нет вкусов, и запустить его, а не по умолчанию. Но тогда вы должны вручную приложить к отладке, и, может быть, у вас появятся другие проблемы. Возможно, есть возможность автоматически генерировать эти задачи для каждого типа аромата / сборки.

Сценарий отсюда: 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' }