chore: versionar app para android
This commit is contained in:
@@ -1,14 +1,16 @@
|
|||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
def appVersion = new Properties()
|
||||||
|
file('../../version.properties').withInputStream { appVersion.load(it) }
|
||||||
namespace "com.ilusion.toldoconjunto"
|
namespace "com.ilusion.toldoconjunto"
|
||||||
compileSdk rootProject.ext.compileSdkVersion
|
compileSdk rootProject.ext.compileSdkVersion
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.ilusion.toldoconjunto"
|
applicationId "com.ilusion.toldoconjunto"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 1
|
versionCode appVersion.getProperty('versionCode').toInteger()
|
||||||
versionName "1.0"
|
versionName appVersion.getProperty('versionName')
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
// 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",
|
"name": "toldo-app",
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "toldo-app",
|
"name": "toldo-app",
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capacitor/android": "^6.2.1",
|
"@capacitor/android": "^6.2.1",
|
||||||
"@capacitor/core": "^6.2.1",
|
"@capacitor/core": "^6.2.1",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "toldo-app",
|
"name": "toldo-app",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ import { describe, expect, it } from 'vitest';
|
|||||||
import { ExportImportService } from '@toldo/services';
|
import { ExportImportService } from '@toldo/services';
|
||||||
|
|
||||||
describe('contratos de operación y respaldo', () => {
|
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', () => {
|
it('exporta jornadas junto con los datos operativos', () => {
|
||||||
const service = new ExportImportService();
|
const service = new ExportImportService();
|
||||||
const result = service.exportAll({
|
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 CURRENT_SCHEMA_VERSION = 1;
|
||||||
export const APP_VERSION = '0.0.1';
|
export const APP_VERSION = '0.0.2';
|
||||||
|
|
||||||
export class ExportImportService {
|
export class ExportImportService {
|
||||||
exportAll(data: ExportData['data']): ExportData {
|
exportAll(data: ExportData['data']): ExportData {
|
||||||
|
|||||||
Reference in New Issue
Block a user