Necesito almacenar información confidencial en una aplicación de Android. Si lo pongo en un archivo de recursos, parece que es trivial que otra aplicación pueda navegar y leer ese archivo simplemente usando PackageManager.getResourcesForApplication().Dónde almacenar información global sensible como claves API en la aplicación de Android?
¿Dónde está el lugar correcto para poner información como esta que no queremos que la gente pueda espiar fácilmente?
¿Debería estar en un archivo java compilado? ¿O los archivos de clases también son fáciles de leer? Además, si están en archivos java, ¿es posible hacer referencia a ellos desde archivos XML que los necesitan (por ejemplo, para la clave de la API de google maps)?
Todo lo que distribuye en su apk es legible. Solo colóquelo en los recursos/archivos java, siempre que no tenga valor alguno, como las claves APA. Si es su número de tarjeta de crédito, no lo escriba en absoluto. La clave api Maps funciona solo en XML IIRC – zapl
En el sitio ProGuard, mencionan [DexGuard] (http://www.saikoa.com/dexguard) que permite una mejor ocultación de, por ejemplo, cadenas estáticas (claves API). Si vale la pena gastar algo de dinero no es un problema comprobar lo que ofrecen. – harism