¿Cuál es la mejor manera de mantener una lista de valores de solo lectura que pueden cambiar al actualizar su aplicación a través de Google Play?

Esto puede ser muy específico dependiendo de qué va a hacer con XML / sqlite. Para su caso (juego), me parece que usar XML tiene más sentido.

Primero, realmente no creo que sqlite necesite más sobrecarga que XML. Y me refiero tanto a la sobrecarga del tiempo de desarrollo como a la sobrecarga del tiempo de ejecución. El único problema es que depende de la biblioteca sqlite. Pero dado que necesitaría alguna biblioteca para XML de todos modos, no importa (supongo que el proyecto está en C / C ++).

Ventajas de SQLite sobre XML:

– todo en un archivo;
– la pérdida de rendimiento es menor que XML a medida que el caché se hace más grande;
– puede mantener los metadatos del feed separados del caché (otra tabla), pero accesibles de la misma manera;
– SQL es probablemente más fácil de trabajar que XPath para la mayoría de las personas;

Desventajas de SQLite:

– puede ser problemático con múltiples procesos que acceden a la misma base de datos (probablemente no sea su caso),
– debe saber al menos SQL básico. A menos que haya cientos de miles de elementos en la memoria caché, no creo que deba optimizarlo demasiado,
– tal vez de alguna manera puede ser más peligroso desde el punto de vista de la seguridad (inyección SQL). Por otro lado, no está codificando una aplicación web, por lo que esto no debería suceder.

Otras cosas están a la par para ambas soluciones probablemente.

1. No lo sabrá, a menos que pruebe su aplicación específica con ambos backends. De lo contrario, siempre es solo una suposición. El soporte básico para ambas cachés no debería ser un problema para codificar. Luego, compara y compara.

2. Debido a la forma en que se organizan los archivos XML, las búsquedas en sqlite siempre deberían ser más rápidas (salvo algunos casos de esquina donde no importa de todos modos porque es increíblemente rápido). Acelerar las búsquedas en XML requeriría una base de datos de índice de todos modos, en su caso eso significaría tener caché para caché, no es una idea particularmente buena. Pero con sqlite puede tener indexación como parte de la base de datos.

Las preguntas específicas de desarrollo se hacen mejor en Stack Overflow, donde encontrará muchas respuestas de una gran comunidad de desarrolladores de Android con experiencia.

Mi preferencia personal por tales valores es mantenerlos en un archivo que sea realmente fácil de editar y que tenga buenas herramientas disponibles para editar.

Para mí eso es típicamente JSON o Lua.

No me gusta XML (grande, molesto para editar a mano), y los formatos opacos como SQlite significan que no puede rastrear sus cambios tan fácilmente en el control de código fuente.