chore: versionar app para android

This commit is contained in:
mono
2026-10-25 18:30:02 -05:00
parent 01b5ee64cc
commit 6da4996cec
11 changed files with 102 additions and 6 deletions

View File

@@ -1,14 +1,16 @@
apply plugin: 'com.android.application'
android {
def appVersion = new Properties()
file('../../version.properties').withInputStream { appVersion.load(it) }
namespace "com.ilusion.toldoconjunto"
compileSdk rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.ilusion.toldoconjunto"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
versionCode appVersion.getProperty('versionCode').toInteger()
versionName appVersion.getProperty('versionName')
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.

View File

@@ -1,12 +1,12 @@
{
"name": "toldo-app",
"version": "0.0.1",
"version": "0.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "toldo-app",
"version": "0.0.1",
"version": "0.0.2",
"dependencies": {
"@capacitor/android": "^6.2.1",
"@capacitor/core": "^6.2.1",

View File

@@ -1,7 +1,7 @@
{
"name": "toldo-app",
"private": true,
"version": "0.0.1",
"version": "0.0.2",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -2,6 +2,11 @@ import { describe, expect, it } from 'vitest';
import { ExportImportService } from '@toldo/services';
describe('contratos de operación y respaldo', () => {
it('expone la versión actual en las exportaciones', () => {
const result = new ExportImportService().exportAll({ productores: [], productos: [], movimientosInventario: [], ventas: [], ventaLineas: [], gastos: [], ajustes: [], cuadres: [] });
expect(result.appVersion).toBe('0.0.2');
});
it('exporta jornadas junto con los datos operativos', () => {
const service = new ExportImportService();
const result = service.exportAll({

View File

@@ -0,0 +1,2 @@
versionName=0.0.2
versionCode=2

View File

@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-10-25

View File

@@ -0,0 +1,23 @@
# Design
## Context
La APK usa `versionCode 1` y `versionName 1.0`, mientras npm y exportaciones usan `0.0.1`. Android requiere `versionCode` creciente para actualizar una instalación existente.
## Goals / Non-Goals
**Goals:** mantener una versión legible y un código Android monotónico, conservando `com.ilusion.toldoconjunto`.
**Non-Goals:** cambiar la firma de la APK, el package id o el esquema de datos.
## Decisions
- Usar `apps/toldo-app/version.properties` como fuente compartida simple (`versionName`, `versionCode`).
- Gradle leerá directamente ese archivo.
- npm y el servicio de exportación reflejarán la misma versión durante esta POC.
- Incrementar `versionCode` sólo cuando se publique una nueva APK.
## Risks / Trade-offs
- Los valores JSON/package no son consumidos automáticamente por Gradle -> una prueba comprobará que coinciden con `version.properties`.
- Instalar una APK firmada con otra clave seguirá requiriendo desinstalación -> se mantiene la clave de debug para builds debug y se documenta la necesidad de conservar la clave release.

View File

@@ -0,0 +1,28 @@
# Proposal
## Why
La aplicación usa versiones distintas o hardcodeadas entre npm, Android y las exportaciones. Esto dificulta instalar actualizaciones sobre una APK existente y mantener trazabilidad de los respaldos.
## What Changes
- Definir `versionName` y `versionCode` en un archivo versionado compartido.
- Usar esos valores en Gradle, npm y exportaciones JSON.
- Publicar la siguiente versión como `0.0.2` con `versionCode 2`.
- Validar el `applicationId` y la versión en el APK generado.
## Capabilities
### New Capabilities
- `app-versioning`: versionado consistente para web, exportaciones y Android.
### Modified Capabilities
- Ninguna.
## Impact
- `apps/toldo-app`: configuración npm y Android.
- `packages/services`: metadato de exportación.
- Build APK y pruebas de versionado.

View File

@@ -0,0 +1,22 @@
# Spec Delta
## Purpose
Asegura que cada actualización de ToldoConjunto pueda identificarse y actualizar una instalación Android existente sin conflictos causados por códigos de versión repetidos o decrecientes.
## ADDED Requirements
### Requirement: Versionado consistente
The system SHALL expose the same semantic version in npm metadata, exported data, and Android versionName.
#### Scenario: Version 0.0.2
- **WHEN** the app is built
- **THEN** npm and exported data report `0.0.2`
- **AND** Android reports versionName `0.0.2` and versionCode `2`
### Requirement: Identidad Android estable
The system SHALL preserve the application id `com.ilusion.toldoconjunto` across releases.
#### Scenario: Actualización instalada
- **WHEN** a newer APK is installed with the same signing key
- **THEN** Android recognizes it as an update to the existing application

View File

@@ -0,0 +1,12 @@
# Tasks
## 1. Versionado
- [x] 1.1 Crear la fuente compartida con `versionName=0.0.2` y `versionCode=2`, y actualizar npm/exportaciones
- [x] 1.2 Configurar Gradle para leer la fuente compartida y conservar el applicationId
- [x] 1.3 Añadir test que compruebe versionado y compatibilidad de exportación
## 2. Verificación
- [x] 2.1 Ejecutar tests y build web
- [x] 2.2 Generar APK debug y verificar package id, versionName y versionCode

View File

@@ -19,7 +19,7 @@ export interface ExportData {
}
export const CURRENT_SCHEMA_VERSION = 1;
export const APP_VERSION = '0.0.1';
export const APP_VERSION = '0.0.2';
export class ExportImportService {
exportAll(data: ExportData['data']): ExportData {