Librerias de apoyo (App Version)

Otra herramienta útil para gestionar una aplicación móvil es conocer la versión de la aplicación. En cada entorno de desarrollo necesitamos funciones diferentes para conocer la versión en ejecución. El control de versiones es importante ya que una vez publicado un juego o aplicación todos los archivos adjuntos a la aplicación no se actualizarán.



Imaginemos que nuestra app utiliza un fichero de BBDD *.db que necesitamos actualizar al publicar una nueva versión en la tienda. Cuando los usuarios actualicen la app, no sabremos desde que versión están actualizando. Además los nuevos ficheros que de distribuyen con el fichero APK serán actualizados, pero aquellos que ya existían no serán actualizados. Tener un control de la versión de la app nos permitirá controlar los cambios y actualizar los ficheros manualmente que sean necesarios.


Para la gestión de versiones yo uso estas rutinas:

 unit AppVersion;  
 interface  
 {$IF DEFINED(iOS)}  
  uses Macapi.CoreFoundation;  
 {$ENDIF}  
 {$IF DEFINED(ANDROID)}  
  uses  
   Androidapi.JNI.JavaTypes,  
   FMX.Helpers.Android,  
   Androidapi.JNI.GraphicsContentViewText,  
   Androidapi.Helpers;  
 {$ENDIF}  
 {$IF DEFINED(MSWINDOWS)}  
  uses  
   SysUtils;  
 {$ENDIF}  
 function GetAppVersionStr: string;  
 implementation  
 {$IF DEFINED(MSWINDOWS)}  
 function GetAppVersionStr: string;  
 var  
  Rec: LongRec;  
 begin  
  Rec := LongRec(GetFileVersion(ParamStr(0)));  
  Result := Format('%d.%d', [Rec.Hi, Rec.Lo])  
 end;  
 {$ENDIF}  
 {$IF DEFINED(ANDROID)}  
 function GetAppVersionStr: string;  
 var  
  PackageManager: JPackageManager;  
  PackageInfo : JPackageInfo;  
 begin  
  PackageManager := SharedActivity.getPackageManager;  
  PackageInfo := PackageManager.getPackageInfo(SharedActivityContext.getPackageName(), TJPackageManager.JavaClass.GET_ACTIVITIES);  
  Result:= JStringToString(PackageInfo.versionName);  
 end;  
 {$ENDIF}  
 {$IF DEFINED(iOS)}  
 function GetAppVersionStr: string;  
 var  
  CFStr: CFStringRef;  
  Range: CFRange;  
 begin  
  CFStr := CFBundleGetValueForInfoDictionaryKey(  
   CFBundleGetMainBundle, kCFBundleVersionKey);  
  Range.location := 0;  
  Range.length := CFStringGetLength(CFStr);  
  SetLength(Result, Range.length);  
  CFStringGetCharacters(CFStr, Range, PChar(Result));  
 end;  
 {$ENDIF}  
 end.  

No hay comentarios:

Publicar un comentario

Energy Up: Cuando el pasado encuentra el futuro

Una vez me dijeron que la inspiración llega cuando menos te lo esperas. Después de terminar mi ultimo proyecto  Simón, color vs. color , qu...