chore: versionar app para android
This commit is contained in:
@@ -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.
|
||||
|
||||
4
apps/toldo-app/package-lock.json
generated
4
apps/toldo-app/package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "toldo-app",
|
||||
"private": true,
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.2",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -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({
|
||||
|
||||
2
apps/toldo-app/version.properties
Normal file
2
apps/toldo-app/version.properties
Normal file
@@ -0,0 +1,2 @@
|
||||
versionName=0.0.2
|
||||
versionCode=2
|
||||
2
openspec/changes/standardize-app-version/.openspec.yaml
Normal file
2
openspec/changes/standardize-app-version/.openspec.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-10-25
|
||||
23
openspec/changes/standardize-app-version/design.md
Normal file
23
openspec/changes/standardize-app-version/design.md
Normal 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.
|
||||
28
openspec/changes/standardize-app-version/proposal.md
Normal file
28
openspec/changes/standardize-app-version/proposal.md
Normal 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.
|
||||
@@ -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
|
||||
12
openspec/changes/standardize-app-version/tasks.md
Normal file
12
openspec/changes/standardize-app-version/tasks.md
Normal 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
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user