Archivo de construcción de Android Gradle con Time Stamp corriendo versión de ayer
A continuación tengo mi archivo de compilación para Gradle. Problema. Corre el APK de ayer en lugar del de hoy. Causa principal. Puse dinámicamente la fecha en el nombre de apks – para compilaciones de depuración.
Cuando ejecuto la aplicación ve el viejo APK y ve que coincide con lo que Gradle está esperando, ya que Gradle no ha actualizado y notado el cambio de fecha.
- ¿Cómo tener dos sabores de construcción heredar de un sabor de raíz en Android Studio?
- Cómo resolver java.util.zip.ZipException entrada duplicada: com / google / gson / annotations / Expose.class?
- Error al convertir bytecode a dex: Causa: java.lang.RuntimeException: Clases de análisis de excepción - Android studio 2.0 beta 6
- Android Studio muestra Errores (Traducción perdida) después de actualizar
- ResValue gradle error: Tipo no soportado "String" en "generated.xml"
Necesito forzar gradle para actualizar cada carrera.
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) } } } }
- Cambiar el contenido de un archivo java a través de gradle para diferentes tipos de compilación en Android
- Incrementar versión en la compilación del proyecto
- ¿Cómo resolver el error de Android Studio donde no puede encontrar el archivo de manifiesto del proyecto?
- Cómo configurar mi gradle para la versión final de apk
- Error de compilación de Gradle (Android Studio 2.2.2)
- Uso de las divisiones de APK para el tipo de generación Release pero no Debug
- Ejecute la tarea después de packageApplication cuando utilice el complemento androide gradle
- ¿Cómo dividir la lógica build.gradle en archivos más .gradle?
Opciones de la línea de comandos
Aunque algunas otras opciones podrían funcionar, ¿has probado el
--recompile-scripts
Obliga a recompilar las secuencias de comandos, evitando el almacenamiento en caché.
Opción de línea de comandos ? Otra alternativa sería --rerun-tasks
, pero que podría ser excesivo.
Opción de código: upToDateWhen
Echa un vistazo a Restaurar la propiedad UP-TO-DATE de las tareas de gradle? . Setting upToDateWhen {false}
puede hacer el truco. Intente lo siguiente en su lugar:
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) } }
Puede crear tal tarea, por ejemplo, para cada sabor y tipo de construcción (installDebug, intallRelease) si no hay sabores, y ejecutarlo en lugar de la configuración predeterminada Ejecutar. Pero, a continuación, debe adjuntar manualmente a depuración y, tal vez, tendrá algunos otros problemas. Tal vez hay alguna capacidad para generar estas tareas automáticamente para cada sabor / tipo de construcción.
Script desde aquí: 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' }
- RoboGuice 3.0 NoClassDefFoundError: roboguice.inject.ContextScopedRoboInjector
- El botón recortado no recibe la entrada táctil